使用类,设置器和获取器

时间:2019-07-18 02:47:52

标签: python class oop

  

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

     
      
  • 代码1构造函数
  •   
  • 这需要2个参数
  •   
  • 代码2属性
  •   
  • 1个属性是公开的
  •   
  • 1个属性是私有的
  •   
  • 为1个私有财产创建访问器和设置器
  •   
  • 实例化上面创建的类<​​/ li>   
  • 输出两个属性
  •   

我相信我已经能够创建类以及构造函数,但是我遇到的问题是公共/私有属性以及其他部分使我感到困扰。

class Color:
   def __init__(self,full_name,birthday ):
       self.name = full_name
       self.birthday = birthday

   def age(self):
      return self.birthday

   def fname(self):
       return _self.name

object = Color()

1 个答案:

答案 0 :(得分:1)

使用python @property的getter和setter装饰器,从实例对它们的调用是无法区分的。
内部工作遵循针对私有属性的主要下划线约定,而无需诉诸double underscore name mangling

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)