如何解决无限调用python类变量
所以,我对 Python 还很陌生,我正在努力学习 OOP 范式在那里是如何工作的。 在这个阶段让我感到困惑的一件事是类变量。更具体地说,请考虑取自 Dusty Phillips 所著 Python 3 Object-Oriented Programming 一书中的以下示例(第 3 章 - 当对象相似时):
class Contact:
all_contacts = []
def __init__(self,name,email):
self.name = name
self.email = email
Contact.all_contacts.append(self)
因此,这里我们看到一个简单的类示例,该类具有类变量 all_contacts
,它是一个空列表。除此之外还有两个实例变量,name
和email
。
现在,如果我们要创建类 Contact
的两个不同实例,例如
c1 = Contact('John','john@gmail.com')
c2 = Contact('Mark','mark@yahoo.com')
我们可以通过两种方式访问属性 name
和 email
,即
c1.name
c1.all_contacts[0].name
但这就是我遇到问题的地方 - all_contacts
是一个类变量,这意味着它对类 Contact
的所有实例都是通用的。它不仅适用于所有实例,而且由于此列表的填充方式,没有什么可以阻止我这样做:
c1.all_contacts[1].name
这为我提供了实例 name
的 c2
属性。
事实上,似乎我可以随心所欲地深入:
c1.all.contacts[0].all_contacts[1].all_contacts[0]...
换句话说,我担心如果在 Python 中我们有一个带有类变量作为列表的类,然后在初始化方法中我们将 self
存储到该列表中,那么我们是否会创建一个可以无限引用自身的结构次?有什么解决方法吗?
如果有人能对这种行为发表评论,我将不胜感激。
亲切的问候
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。