我有一个简单的 A 类,它从用户那里获取名称。
class A:
def __init__(self, name = ''):
self.name = name
然后我想创建一个打印出这个名字的 B 类。我试过了:
class B:
def print_name(printing_name = A.name):
print(printing_name)
然后我调用这些方法:
m1 = A("x")
B.print_name(m1)
这将返回错误
Traceback (most recent call last):
File "so.py", line 5, in <module>
class B:
File "so.py", line 7, in B
def print_name(printing_name = A.name):
AttributeError: class A has no attribute 'name'
我知道我没有在类 A 中分配类变量,因此 name 属性与特定实例相关,而不是整个类。但是,名称属性必须与每个特定实例相关联,因为它会因情况而异。那么我应该如何在B类中获得这个名字?
将您的更改class B
为:
class B:
@staticmethod
def print_name(obj):
print(obj.name)
该print_name
方法可能应该被装饰为“静态方法”。属性“ name
” ofself
是一个实例属性,不能直接从类本身引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句