Python 我是否可以将子对象属性继承到父对象属性,以便它们随着子对象的更改而更改?
假设我有两个类,父类和子类,如下所示:Python 我是否可以将子对象属性继承到父对象属性,以便它们随着子对象的更改而更改?,python,oop,Python,Oop,假设我有两个类,父类和子类,如下所示: class Child: def __init__(self, name): self.name = name def change_name(self, name): self.name = name class Parent: def __init__(self, child): self.child = child self.childs = [child]
class Child:
def __init__(self, name):
self.name = name
def change_name(self, name):
self.name = name
class Parent:
def __init__(self, child):
self.child = child
self.childs = [child]
def new_child (self, child):
self.childs.append[child]
self.child = child
现在,如果我创建子对象和父对象,那么我想从父对象调用子属性,如下例所示
child = Child('Nelson')
parent = Parent(child)
# I want to access child name from the parent object
print(parent.name) # should return parant.child.name <'Nelson'>
new_child = Child('Thomas')
parent.new_child(new_child)
print(parent.name) # should return the new name <'Thomas'>
# some code that will change the name of the child object
print(parent.name) # should return the new name
但是,我的子对象有多个属性,我正在寻找一种更有效的方法将子属性继承到父对象中您已经概述了最清晰、最易访问的方法:
- 让父属性调用引用的子对象名称属性
\uuuu getattribute\uuuu
调用,并查看子对象是否具有hasattr,然后返回子属性
请参见此处:您已经概述了最清晰、最容易实现的方法:
- 让父属性调用引用的子对象名称属性
\uuuu getattribute\uuuu
调用,并查看子对象是否具有hasattr,然后返回子属性
请参见此处:我认为“将子属性继承到父对象中”不是一个正确的术语。这里没有继承——我们有水平相关的类,而不是垂直相关的类。子级是公开的,因此我们可以继续使用间接层来访问所有属性parent.child.foo
,parent.child.baz=“qux”
,等等。如果您试图封装,这是可以的,但目前还不清楚是否需要这样做。请参阅,并在此处提供更多上下文。谢谢我不认为“将子属性继承到父对象中”是正确的术语。这里没有继承——我们有水平相关的类,而不是垂直相关的类。子级是公开的,因此我们可以继续使用间接层来访问所有属性parent.child.foo
,parent.child.baz=“qux”
,等等。如果您试图封装,这是可以的,但目前还不清楚是否需要这样做。请参阅,并在此处提供更多上下文。谢谢
class Parent:
def __init__(self, child):
self.child = child
self.childs = [child]
def new_child (self, child):
self.childs.append[child]
self.child = child
@property
def name(self):
return self.child.name