Open huashengcaicai opened 5 years ago
class Person(object): def __init__(self): self.__age = 18 @property #通过property这个属性对age提供getattr方法 def age(self): return self.__age #通过实例化的方法调用私有属性,进行访问 @age.setter #使用装饰器,提供一个settr方法 def age(self,age): if age < 0: print('年龄是不可以小于0的') else: self.__age = age # age = property(get_age,set_age) # huasheng = Person() # res = huasheng.get_age() # print(res) # huasheng.set_age(100) # res = huasheng.get_age() # print(res) huasheng = Person() huasheng.age = 89 print(huasheng.age)
init方法需要在实例化对象产生的基础才会被调用,new方法是生成一个实例化对象,所以要先执行new方法且要返回实例化对象,这时才会调用init方法。
class A(object): def __init__(self): print('init方法被执行') print(a) # new方法是用来创建实例对象的,必须返回一个实例对象,调用了父类的方法,返回给它 def __new__(cls,*args,**kwargs): print('new方法被执行') return object.__new__(cls) a=1 b = A()
类的私有属性,如果在外部访问的话,需要在类中定义get和set方法
在类的外部可以调用get和set方法进行访问和修改,这里引用property属性,会更高效,简洁
python中new方法的应用
init方法和new方法的区别,new方法是类级别的方法,而init方法是实例对象方法
init方法需要在实例化对象产生的基础才会被调用,new方法是生成一个实例化对象,所以要先执行new方法且要返回实例化对象,这时才会调用init方法。