Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与类、setter和getter一起工作_Python_Class_Oop - Fatal编程技术网

Python 与类、setter和getter一起工作

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

我需要创建一个名为Color的类

  • 代码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)