从父类继承实例变量



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 类初始化,我想要从主程序中所示的实例变量集中的当前值。

我不完全确定你想要的最终结果是什么。

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

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"。

类方法是绑定到类而不是类的对象的方法。他们有权访问类的状态,因为它采用指向类而不是对象实例的类参数。

这是你要找的吗?如果没有,你能更详细地解释这个问题吗?

最新更新