@property
什么
property RW limit
这里如果想设置合理区分读、写权限的话,定义class
时需要继承object
类,不然读写权限无法限制
只读
class Person(object):
human = True
def __init__(self, name, gender):
self.Name = name
self.__Gender = gender
self.__Money = 100
@staticmethod
def Hello():
print('Hello World!')
def info(self):
print('Name: {} \nGender: {}'.format(self.Name, self.__Gender))
def __set_money(self, num):
self.__Money += num
def salary(self):
self.__set_money(1000)
print('Name: {} \nGerder: {} \nCurrent Money: {}'.format(self.Name, self.__Gender, self.__Money))
@property
def money(self):
return self.__Money
Da = Person('Da', 'male')
print(Da.money)
输出
100
尝试写入看下
class Person(object):
human = True
def __init__(self, name, gender):
self.Name = name
self.__Gender = gender
self.__Money = 100
@staticmethod
def Hello():
print('Hello World!')
def info(self):
print('Name: {} \nGender: {}'.format(self.Name, self.__Gender))
def __set_money(self, num):
self.__Money += num
def salary(self):
self.__set_money(1000)
print('Name: {} \nGerder: {} \nCurrent Money: {}'.format(self.Name, self.__Gender, self.__Money))
# 只读
@property
def money(self):
return self.__Money
Da = Person('Da', 'male')
print('Before setter money is {}.'.format(Da.money))
Da.money = 5000
print('After setter money is {}.'.format(Da.money))
输出
Before setter money is 100.
Traceback (most recent call last):
File "F:/Python/Learn Through/oop1.py", line 48, in <module>
Da.money = 5000
AttributeError: can't set attribute
可写特性
class Person(object):
human = True
def __init__(self, name, gender):
self.Name = name
self.__Gender = gender
self.__Money = 100
@staticmethod
def Hello():
print('Hello World!')
def info(self):
print('Name: {} \nGender: {}'.format(self.Name, self.__Gender))
def __set_money(self, num):
self.__Money += num
def salary(self):
self.__set_money(1000)
print('Name: {} \nGerder: {} \nCurrent Money: {}'.format(self.Name, self.__Gender, self.__Money))
# 只读
@property
def money(self):
return self.__Money
# 可写
@money.setter
def money(self, value):
self.__Money = value
Da = Person('Da', 'male')
print('Before setter money is {}.'.format(Da.money))
Da.money = 5000
print('After setter money is {}.'.format(Da.money))
输出
Before setter money is 100.
After setter money is 5000.