请帮助我理解Python中的类

2024-09-29 23:26:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新手,我发现很难掌握python中类的语法。我有C/C++、java和Objor C的背景。我在Python中注意到的一个很大的区别是,你没有明确地声明类中的“数据成员”,而只是随机添加它们。这导致了相当大的混乱。在

假设我有课

class MyClass:

    def __int__(self, a, b):

        self.a = a

        self.b = b

当我启动物体时。在

^{pr2}$

由于某种原因,过了一段时间,我才知道我需要这个类中的另一个参数,但我不想用构造函数来初始化它,因为它将由另一个函数根据某个特定的条件来初始化,所以在整个混乱的代码中,这将是变量真正诞生的唯一点。当我在调试或由于其他原因检查代码时,不是会让人困惑吗?在


Tags: 数据代码self声明defmyclass语法成员
3条回答

你真的应该在你的文本中使用一些: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__中的所有属性。你不必这样做,但有很多理由可以让你选择。
也许它可以提高你的编辑理解突出显示或完成代码的能力。
也许这只是你喜欢的一种风格。在

简而言之,是的。在

你说得对。Python允许您添加(和删除!)来自对象的成员可以随时随意访问。构造函数没有什么特别之处,它可以做其他函数不能做的事情

如果你想确保你的类的所有实例在任何时候都有相同的成员,那么一定要在构造函数中分配它们,对那些还没有意义的成员使用一个像None这样的前哨值,并避免在构造函数之外添加新成员。在

如何操作对象取决于你自己,如果你想以静态的方式操作,那就好了,或者如果你想利用在任意时间添加和删除成员的能力,那也没问题。Python本身并不强制(m)任何规则。在

相关问题 更多 >

    热门问题