繁体   English   中英

请帮助我了解Python中的类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM