-
用@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
查看全部
举报