从父类继承实例变量

时间:2020-06-09 19:52:01

标签: python-3.x class

main.py

   ...
   person = cPerson("xyz", "ozp")
   ...
   person.set_name("somename")
   ...
   csystem = cSystem()
   ...

cperson.py

   class cPerson:
      def __init__(self, addr, client):
         self.addr = addr
         self.client = client
         self.name = None

      def set_name(self, name):
         self.name = name  

csystem.py

   from cperson import cPerson

      class cSystem(cPerson):
         def __init__(self):
            print(self.name)

我可以通过这种方式从父类访问self.name吗?我收到错误消息:

AttributeError: 'cSystem' object has no attribute 'name'

我不想从csystem类初始化,我想从实例变量集中获取当前值,如主程序中所示。

1 个答案:

答案 0 :(得分:0)

我不确定您希望最终结果是什么。

无论如何,这是您要寻找的东西吗?

class cPerson:

    name = None

    def __init__(self, addr, client):
        self.addr = addr
        self.client = client

    @classmethod
    def set_name(cls, value):
        cls.name = value


class cSystem(cPerson):
    def __init__(self, addr, client):
        super().__init__(addr, client)
        print(self.name)


person = cPerson("xyz", "ozp")
person.set_name('Jake')

csystem = cSystem("xyz", "ozp")

上面的代码返回“ Jake”。

类方法是绑定到类而不是类对象的方法。他们可以访问类的状态,因为它需要一个指向该类而不是对象实例的类参数。

这是您要找的东西吗?如果不能,您能否更详细地解释问题?