我正在尝试导入我的类,以便在另一个中使用它的属性。 是否可以为派生类调用基本类的方法?在基本类中有方法,其中包含封闭方法的封闭方法。
或者我应该打开它的方法及其属性来调用它们吗? 那么,我想给你举个例子,请帮助我吗?我失去了一点点。
我有一个基础课(1):
class Car (object):
"""Virtual car"""
total=0
def __init__(self,petrol=100):
self.__petrol=petrol
@property
def petrol(self):
return self.__petrol
@petrol.setter
def petrol(self,new_petrol):
self.__petrol=new_petrol
print("The level of petrol was changed")
def __str__(self):
print("Car condition")
print(" "+ self.__petrol )
def __addPetrol(self):
print("Welcome to petrol station!")
addPetr=int(input("Enter quanity of litres: "))
self.__petrol=self.petrol+addPetr
print("Thank you for visit the OIL service!")
def __visitSrvice(self):
print("""
1. pour some petrol
2. poor some oil
""")
visit=int(input("Choose a turn"))
if 1==visit :
self.__addPetrol()
if 2==visit :
..............
def go(self):
print("""
1. Go on your journey
2. Visit a service
""")
gg = int(input("Choose your action"))
if 1==gg :
..................
if 2==gg :
self.__visitSrvice()
if __name__ == "__main__":
print("Use modul correctly")
input("press enter to out")
然后我尝试将基本类导入另一个文件,然后调用一个函数,请查看:
import Mcar
class Chassis_Engine(object):
def Deterioration(self):
def Recovering(self):
Mcar.Car.visitService(self)
ce=Chassis_Engine()
ce.Recovering()
当然,我有一个错误,其中包含:
追踪(最近一次通话): 文件“E:/car/car.py”,第11行,in ce.Recovering()
文件“E:/car/car.py”,第8行,在恢复中 Mcar.Car.visitService(个体)
AttributeError:类型对象'Car'没有属性'visitService'
请跟我说,如果我不想打开封闭的方法和属性,我可以这样做吗?如果不是,我该怎么办?感谢。
答案 0 :(得分:0)
有一个名为dir
的函数可以为您提供类提供的所有方法。观察:
>>> class A:
... def __hidden():
... print('hello')
...
>>> dir(A)
['_A__hidden', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
第一种方法(_A__hidden
)就是你要找的。 p>
一般来说,Python中没有真正的“私有”方法。相反,您可以使用这些“双下划线”方法,但这些方法是公开的,但使用修改后的名称:_ClassName__MethodName
。