-
用@property定義的函數,可以再調用時,直接訪問屬性使用,不需要引用的時候加括號()
查看全部 -
類方法是@classmethod,帶入參數是cls(默認使用)
查看全部 -
class?Programer(object): ?"""docstring?for?Programer""" ?def?__init__(self,?name,age): ??super(Programer,?self).__init__() ??self.name?=?name ??self.age?=?age?def?__getattribute__(self,name):??#return?getattr(self,name)????#錯誤寫法,會引起無限遞歸??#return?self.__dict__[name]???#錯誤寫法,會引起無限遞歸??return?super(Programer,self).__getattribute__(name)??#正確??def?__setattr__(self,name,value):??#setattr(self,name,value)???#錯誤寫法,會引起無限遞歸??self.__dict__[name]=value???#正確?if?__name__=='__main__':????p=Programer('lrf',25)????print(p.name)
查看全部 -
#函數 #方法:類的內部函數為方法,其他單寫的為函數class?Programer(object):????hobby='Play?Computer'????"""docstring?for?Programer"""????def?__init__(self,?name,age,weight):????????super(Programer,?self).__init__()????????self.name?=?name???????#普通變量????????self._age?=?age????????#私有變量,但可以外部訪問????????self.__weight?=?weight?#私有變量,但可以通過_Programer.__weight來訪問????@classmethod????def?get_hobby(self):????????return?self.hobby??????#@classmethod直接Programer.get_hobby訪問,類似于C的靜態????????@property????def?get_weight(self):??????#@property定義屬性????????return?self.__weight??????def?self_introductioon(self):??#通過類的實例來訪問????????print?('My?Name?is?%s?\nI?am?%s?years?old\n'?%?(self.name,self._age))class?BackendProgramer(Programer):??"""docstring?for?ClassName"""??def?__init__(self,?name,age,weight,language):??#類的繼承????super(BackendProgramer,?self).__init__(name,age,weight)????self.language?=?language??def?self_introductioon(self):??#類方法的重寫?????print?('My?Name?is?%s?\n?My?favorite?language?is?%s'?%?(self.name,self.language))def?introduce(programer):????if?isinstance(programer,Programer):??#判斷是不是該類型?多態???????programer.self_introductioon()if?__name__=='__main__':???programer=Programer('lrf',25,80)???print?(dir(programer))??????#類的屬性,包括object之類的???print?(programer.__dict__)??#類的屬性,內部屬性???print?(Programer.get_hobby())???print?(programer.get_weight)???programer.self_introductioon()???backendProgramer=BackendProgramer('Tim',30,70,'Python')???introduce(programer)???introduce(backendProgramer)
查看全部 -
定義類的方法 #函數 #方法:類的內部函數為方法,其他單寫的為函數 class?Programer(object):???? hobby='Play?Computer'???? """docstring?for?Programer"""???? def?__init__(self,?name,age,weight):???????? super(Programer,?self).__init__()???????? self.name?=?name???????#普通變量???????? self._age?=?age????????#私有變量,但可以外部訪問???self.__weight?=?weight?#私有變量,但可以通過_Programer.__weight來訪問???? @classmethod???? def?get_hobby(self):???????? return?self.hobby??????#@classmethod直接Programer.get_hobby訪問,類似于C的靜態???????? @property???? def?get_weight(self):??????定義屬性????????return?self.__weight?? ???? def?self_introductioon(self):??#通過類的實例來訪問????????print?('My?Name?is?%s?\nI?am?%s?years?old\n'?%?(self.name,self._age)) if?__name__=='__main__':?? ?programer=Programer('lrf',25,80)??? ?print?(dir(programer))??????#類的屬性,包括object之類的??? ?print?(programer.__dict__)??#類的屬性,內部屬性???print?(Programer.get_hobby())??? ?print?(programer.get_weight)??? ?programer.self_introductioon()
查看全部 -
對象:類的一個實例查看全部
-
看看查看全部
-
有人有關于爬蟲學習的網站嗎?查看全部
-
python類的主要魔術方法:
1,輸出方法
__str__(), __repr__(), __dir__()
2,比較運算符
__eq__(), __gt__(), __lt__(), __ge__(), __le__()
3,算術運算符
_add__(), __sub__(), __mul__(), __div__()
查看全部 -
class Person(object):
????def __init__(self, name, age):
????????self.name = name
????????self.__age = age
p = Person('zhao', 30)
1,__age屬性在外部不能訪問,但可以通過 _Person__age 這樣的形式訪問到;
2,調用 p.__dict__() 可以得到包含所有屬性名和屬性值的字典;
查看全部 -
避免注釋掉的三個錯誤寫法,會造成無限遞歸。
查看全部 -
python支持重載運算符,使用magic mathod?方式。例如圖中的__add__重載完了之后,就可以使用 p1+p2了。
查看全部 -
對象實例化過程會經歷兩個magic?method(魔術方法),但我們往往不自己定義 __new__(cls)
查看全部 -
python中可以使用繼承然后重寫父類方法來實現多態
查看全部 -
子類應當主動調用父類的構造函數:
def?__init__(self,?name,?age,?weight,?language): ????super(BackendProgrammer,?self).__init__(name,?age,?weight) ????self.language?=?language
查看全部
舉報