python中的objectName.\uuuu init\uuuuu是如何工作的?
我今天看到了这个python函数python中的objectName.\uuuu init\uuuuu是如何工作的?,python,Python,我今天看到了这个python函数 class className(GObject.Object, Loggable): def __init__(self, project): GObject.Object.__init__(self) Loggable.__init__(self) object.\uuuu init\uuuuu如何工作 我知道init函数是一个构造函数,用于初始化类实例对象的默认值?(我对类实例和类对象之间的区别也很困惑)\uuu ini
class className(GObject.Object, Loggable):
def __init__(self, project):
GObject.Object.__init__(self)
Loggable.__init__(self)
object.\uuuu init\uuuuu如何工作
我知道init函数是一个构造函数,用于初始化类实例对象的默认值?(我对类实例和类对象之间的区别也很困惑)
\uuu init\uuu
每次使用带括号的类名时都会被调用
class MyClass: # 1
def __init__(self, number): # 2
self.x = number # 3
if __name__ == '__main__':
instance_of_my_class = MyClass(5) # 0, 4
让我们一步一步来:
- 0:我们使用类
,并用值5调用它MyClass
- 1:MyClass通常是类对象;它不包含任何特定的实例值
- 2:从0开始,调用
;它接收两个参数:\uuuuu init\uuuu
。前者是对我们正在创建的self,number
的新实例的引用;后者只是我们在初始化时传递的论点MyClass
- 3:我们可以将
参数存储在类中的一个名为x的字段中number
- 4:
自动返回我们创建的类的新实例,我们将它存储在某个地方(简化,它实际上没有)\uuuuu init\uuuuuu
- 类:一组对象的蓝图,这些对象共享相同的字段和方法,但稍后将使用不同的值初始化
- 类实例/对象:类的具体实例,为每个属性提供一些具体值
- 类方法/属性:与特定实例无关,但通常与类相关的值或方法
class MyClass:
def __init__(self):
pass
@classmethod
def sum(cls, a, b):
return a + b
if __name__ == '__main__':
instance1 = MyClass()
print(instance1.sum(1, 1)) # >>> 2, as expected
print(MyClass.sum(1, 1)) # >>> 2! we can call such method without an instance but from the class itself
\uuuu init\uuuu
如何工作是一个非常普遍的问题,您可以在任何一本像样的Python书籍或许多在线资源中阅读。在这里询问之前请先这样做。相关:\uuuuu init\uuuuuu
不返回任何内容,\uuuu new\uuuuuu
会返回任何内容。@timgeb谢谢!我知道。由于这个问题似乎不熟悉OOP(至少在Python中是这样),我决定简化答案;我认为把他和这个细节混淆并不能帮助他更好地理解它。我补充了一句话。
class MyClass:
def __init__(self):
pass
@classmethod
def sum(cls, a, b):
return a + b
if __name__ == '__main__':
instance1 = MyClass()
print(instance1.sum(1, 1)) # >>> 2, as expected
print(MyClass.sum(1, 1)) # >>> 2! we can call such method without an instance but from the class itself