在 class 中创建 class 个实例
Create class instance within a class
我在 python 中有一个嵌套的 class 例如:
class A():
def __init__(self, attr1):
self.attr1 = attr1
class B():
def __init__(self, attr2):
self.attr2 = attr2
我要实现的是instance b for class B,会像instance的数据结构a 对于 class A
不过,b似乎与a没有关联。
我怎样才能做到这一点?
更新:
我要做的是像下图这样的一个java程序对象初始化:
user 似乎包含 userID 和 Password,并且与 serviceOrder 对象相关联。
很少有任何理由将 类 嵌套在 Python 中。我认为你的意思是将B
的实例作为A
实例的属性,这很容易做到:
class A():
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.b = B(attr2)
class B():
def __init__(self, attr2):
self.attr2 = attr2
很可能您的首选解决方案已在 中提供。
但是,如果出于某种原因您或其他人确实需要在 A
中嵌套 class B
,您可以这样做:
class A():
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.b = A.B(attr2) # NOTE: refer to class B via ``A.B``
class B():
def __init__(self, attr2):
self.attr2 = attr2
您必须这样做的原因是 B
是 A
的 class 属性。它与任何其他 class 级别的属性没有什么不同,因此必须通过拥有 class 来访问该属性,例如:
MyClass.my_attr
# OR:
getattr(MyClass, 'my_attr')
# OR:
MyClass.__dict__['my_attr']
# etc. etc.
请注意,即使您在所有者内部也是如此 class:
class MyClass():
class_attr = 1
def get_class_attr(self):
# return class_attr would raise a NameError
return MyClass.class_attr # no error
MyClass().get_class_attr() # 1
我在 python 中有一个嵌套的 class 例如:
class A():
def __init__(self, attr1):
self.attr1 = attr1
class B():
def __init__(self, attr2):
self.attr2 = attr2
我要实现的是instance b for class B,会像instance的数据结构a 对于 class A
不过,b似乎与a没有关联。
我怎样才能做到这一点?
更新:
我要做的是像下图这样的一个java程序对象初始化:
user 似乎包含 userID 和 Password,并且与 serviceOrder 对象相关联。
很少有任何理由将 类 嵌套在 Python 中。我认为你的意思是将B
的实例作为A
实例的属性,这很容易做到:
class A():
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.b = B(attr2)
class B():
def __init__(self, attr2):
self.attr2 = attr2
很可能您的首选解决方案已在
但是,如果出于某种原因您或其他人确实需要在 A
中嵌套 class B
,您可以这样做:
class A():
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.b = A.B(attr2) # NOTE: refer to class B via ``A.B``
class B():
def __init__(self, attr2):
self.attr2 = attr2
您必须这样做的原因是 B
是 A
的 class 属性。它与任何其他 class 级别的属性没有什么不同,因此必须通过拥有 class 来访问该属性,例如:
MyClass.my_attr
# OR:
getattr(MyClass, 'my_attr')
# OR:
MyClass.__dict__['my_attr']
# etc. etc.
请注意,即使您在所有者内部也是如此 class:
class MyClass():
class_attr = 1
def get_class_attr(self):
# return class_attr would raise a NameError
return MyClass.class_attr # no error
MyClass().get_class_attr() # 1