[英]Please help me in understanding Class in Python
我是新手,发现很难掌握python中Class的语法。 我有C / C ++,java和目标C的背景。我在python中注意到的一个很大的不同是您没有在类中显式声明“数据成员”,而只是随机地添加它们? 这会导致很大的混乱。
假设我有一堂课
class MyClass:
def __int__(self, a, b):
self.a = a
self.b = b
然后当我启动对象时。
myobject = MyClass(10,10)
一段时间后,由于某种原因,我开始知道我需要在此类中使用另一个参数,但我不想使用构造函数来初始化该参数,因为它将由另一个函数根据某些特定条件来初始化,因此整个代码混乱不堪那只是变量实际诞生的关键。 是不是我在调试或其他原因检查代码时会感到困惑?
简而言之, 是 。
你是对的。 Python使您可以随时从对象中随意添加(或删除!)成员。 构造函数没有什么特别的,它可以执行其他函数无法执行的任何操作。
如果要确保您的类的所有实例始终具有相同的成员,则一定要在构造函数中全部分配它们,并使用诸如None
的前哨值将那些尚未具有有意义值的值赋给它们;以及避免在构造函数外部添加新成员。
这取决于您如何操作对象,如果您想以静态方式进行操作,那很好,或者如果您想利用在任意时间添加和删除成员的能力,那也很好。 Python本身不施加任何规则。
您确实应该使用一些。 在您的文字中:p
您的意思是:
class MyClass:
def __int__(self, a, b, c=None):
self.a = a
self.b = b
self.c = c
one = MyClass(1,2)
one.c # None
two = MyClass(1,2,3)
two.c # 3
class MyClass:
def __int__(self, a, b):
self.a = a
self.b = b
self.c = None #This line is optional
def set_c(self, c):
self.c = c
有些人喜欢列出__init__
中的所有属性。 您不必一定要这样做,但是有很多原因可能会导致您选择。
也许它可以提高您的编辑器理解突出显示或完成代码的能力。
也许这只是您喜欢的样式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.