-
用@property定義的函數(shù),可以再調(diào)用時(shí),直接訪問屬性使用,不需要引用的時(shí)候加括號()
查看全部 -
類方法是@classmethod,帶入?yún)?shù)是cls(默認(rèn)使用)
查看全部 -
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)????#錯(cuò)誤寫法,會引起無限遞歸??#return?self.__dict__[name]???#錯(cuò)誤寫法,會引起無限遞歸??return?super(Programer,self).__getattribute__(name)??#正確??def?__setattr__(self,name,value):??#setattr(self,name,value)???#錯(cuò)誤寫法,會引起無限遞歸??self.__dict__[name]=value???#正確?if?__name__=='__main__':????p=Programer('lrf',25)????print(p.name)
查看全部 -
#函數(shù) #方法:類的內(nèi)部函數(shù)為方法,其他單寫的為函數(shù)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的靜態(tài)????????@property????def?get_weight(self):??????#@property定義屬性????????return?self.__weight??????def?self_introductioon(self):??#通過類的實(shí)例來訪問????????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):??#判斷是不是該類型?多態(tài)???????programer.self_introductioon()if?__name__=='__main__':???programer=Programer('lrf',25,80)???print?(dir(programer))??????#類的屬性,包括object之類的???print?(programer.__dict__)??#類的屬性,內(nèi)部屬性???print?(Programer.get_hobby())???print?(programer.get_weight)???programer.self_introductioon()???backendProgramer=BackendProgramer('Tim',30,70,'Python')???introduce(programer)???introduce(backendProgramer)
查看全部 -
定義類的方法 #函數(shù) #方法:類的內(nèi)部函數(shù)為方法,其他單寫的為函數(shù) 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的靜態(tài)???????? @property???? def?get_weight(self):??????定義屬性????????return?self.__weight?? ???? def?self_introductioon(self):??#通過類的實(shí)例來訪問????????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__)??#類的屬性,內(nèi)部屬性???print?(Programer.get_hobby())??? ?print?(programer.get_weight)??? ?programer.self_introductioon()
查看全部 -
對象:類的一個(gè)實(shí)例查看全部
-
看看查看全部
-
有人有關(guān)于爬蟲學(xué)習(xí)的網(wǎng)站嗎?查看全部
-
python類的主要魔術(shù)方法:
1,輸出方法
__str__(), __repr__(), __dir__()
2,比較運(yùn)算符
__eq__(), __gt__(), __lt__(), __ge__(), __le__()
3,算術(shù)運(yùn)算符
_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,調(diào)用 p.__dict__() 可以得到包含所有屬性名和屬性值的字典;
查看全部 -
避免注釋掉的三個(gè)錯(cuò)誤寫法,會造成無限遞歸。
查看全部 -
python支持重載運(yùn)算符,使用magic mathod?方式。例如圖中的__add__重載完了之后,就可以使用 p1+p2了。
查看全部 -
對象實(shí)例化過程會經(jīng)歷兩個(gè)magic?method(魔術(shù)方法),但我們往往不自己定義 __new__(cls)
查看全部 -
python中可以使用繼承然后重寫父類方法來實(shí)現(xiàn)多態(tài)
查看全部 -
子類應(yīng)當(dāng)主動調(diào)用父類的構(gòu)造函數(shù):
def?__init__(self,?name,?age,?weight,?language): ????super(BackendProgrammer,?self).__init__(name,?age,?weight) ????self.language?=?language
查看全部
舉報(bào)