Python面向对象(类的成员之属性)

时间:2025-02-13 16:34:02

day24

类的成员之属性

 class Foo():
def bar(self):
print("bar") @property
def per(self):
print('')
return 1 obj = Foo()
obj.bar() r = obj.per#实际上是方法,但通过字段的方式访问
print(r)
实际上是方法,但通过字段的方式访问。
执行结果:
bar
123
1 Process finished with exit code 0

@property,@per.setter,@per.deleter

 class Foo():
def __init__(self):
self.name = 'a' def bar(self):
print("bar") @property#获取
def per(self):
print('')
return 1 @per.setter#设置
def per(self, val):
print(val) @per.deleter
def per(self):
print(666)
obj = Foo()
obj.bar() r = obj.per#实际上是方法,但通过字段的方式访问,对应@property
print(r) obj.per = 123#对应 @per.setter
del obj.per#对应 @per.deleter

执行结果:

bar
1234
1
123
666 Process finished with exit code 0

属性的另一种表达方式

 class Foo:

     def f1(self):
return 123 def f2(self,v):
print(v)
def f3(self):
print('del') per = property(fget=f1,fset=f2,fdel=f3,doc='adfasdfasdfasdf') # @property
# def per(self):
# return 123 obj = Foo()
ret = obj.per#对应与@property
print(ret) obj.per = 123456#对应于@per.setter del obj.per#对应于@per.deleter

property中最多写三个函数,doc为介绍。

Django中有用到以上方式。

执行结果:

123
123456
del Process finished with exit code 0