Python 与类、setter和getter一起工作
我需要创建一个名为Color的类Python 与类、setter和getter一起工作,python,class,oop,Python,Class,Oop,我需要创建一个名为Color的类 代码1构造函数 这需要两个参数 代码2属性 1.财产是公共的 1.财产是私有的 为1私有属性创建访问器和设置器 实例化上面创建的类 输出这两个属性 我相信我已经能够创建类和构造函数,但我的问题是公共/私有属性以及其他部分都让我感到不安 class颜色: 定义初始(自我、全名、生日): self.name=全名 生日 年龄(自我): 回归自我生日 def fname(自我): return\u self.name 对象=颜色() 使用python@proper
- 代码1构造函数
- 这需要两个参数
- 代码2属性
- 1.财产是公共的
- 1.财产是私有的
- 为1私有属性创建访问器和设置器
- 实例化上面创建的类
- 输出这两个属性
class颜色:
定义初始(自我、全名、生日):
self.name=全名
生日
年龄(自我):
回归自我生日
def fname(自我):
return\u self.name
对象=颜色()
使用python@property
getter和setter装饰器,从实例对它们的调用是不可区分的。内部工作遵循私有属性的主下划线约定,而不诉诸于
def age和def fname应该被归类这不是一个答案,但它是相关的,您应该阅读:我认为这也值得一读:.
return\u self.name
← 这将引发一个错误。你的意思是返回self.\u name
吗?这使用了“属性”一词,但措辞听起来像是“属性”的意思。我建议澄清任务的意图;属性是存储在实例中的实际值,属性是与属性一样使用的访问器,但调用函数来满足它们,而不仅仅是直接查找实例上的值。注意:如果它们真正是指私有的,而不仅仅是“非公共的”/受约定保护的,那么它应该是self.\u param1
(两个下划线),而不是self.\u参数1
(一条下划线)。单下划线表示“受保护”或“不属于公共API”,其中双下划线使用名称扭曲来根据类名分隔属性名。是的,同意-如果它们真正表示私有,那么python可能不是一个好的选择。
class Homework:
def __init__(self, param1, param2):
self._param1 = param1 # private attribute
self.param2 = param2 # public attribute
@property
def param1(self):
"""accessor for private parameter
"""
return self._param1
@param1.setter
def param1(self, value):
"""setter for private parameter
"""
self._param1 = value
homework = Homework('The great secret', 'The public life of Napoleon')
# accessing the parameters follow the same syntax
print(homework.param1)
print(homework.param2)
# setting the parameters also follow the dotted syntax
homework.param1 = "you won't believe it"
homework.param2 = 'but the dog ate it'
print(homework.param1)
print(homework.param2)