pionrrt 发表于 2023-6-14 22:25:45

关于类里的__init__函数

class Mystuff(object):
    def __init__(self):
      self.tangerine="And now a thousand years between"
    def apple(self):
      print("I am an apple.")
      
thing=Mystuff()
thing.apple()
print(thing.tangerine)

①不太理解这个self,在下面的实例化里,thing就替换了self么
②还有self.tangerine="And now a thousand years between"是在干什么
③实例化里为什么括号里是空的

isdkz 发表于 2023-6-14 22:29:22

这是一个非常好的问题。这里的代码是在创建一个Python类,这个类中有一个初始化方法 __init__ 和一个叫做 apple 的方法。下面我逐个回答你的问题:

① self 是一个习惯性的名字,它是一个指向实例本身的引用。在类的方法中,我们使用这个引用来访问或操作类的属性。当你创建一个类的实例,如 thing = Mystuff() ,Python会自动将 thing 作为 self 传递给 __init__ 方法。

②self.tangerine = "And now a thousand years between" 这行代码在做的是:当你创建 Mystuff 的一个实例时,它会自动创建一个叫做 tangerine 的属性,并给它赋值为"And now a thousand years between"。你可以通过 thing.tangerine 来访问这个属性的值。

③Mystuff() 的括号里是空的,是因为在这个例子中, Mystuff 类的 __init__ 方法没有定义任何其他的参数除了 self 。 self 参数不需要你在实例化时传递,Python会自动处理。如果 __init__ 方法定义了其他参数,那么你在实例化时需要传递对应的值。例如:

class Mystuff(object):
    def __init__(self, value):
      self.tangerine = value

thing = Mystuff("A new value")
print(thing.tangerine)# 输出:A new value


在这个修改后的例子中,我们在 __init__ 方法中定义了一个新的参数 value ,在创建 Mystuff 的实例时,需要传递一个值给这个参数。

sfqxx 发表于 2023-6-14 22:36:52

1. 在定义类中,self 表示该类实例化后的对象本身。在这个实例化后的对象中,self 将指向当前对象本身,因此 self.tangerine 表示 Mystuff 类中的 tangerine 成员变量。
在这个代码中,当我们使用 thing=Mystuff() 来创建一个名为 thing 的 Mystuff 对象时,self 就代表这个被创建出来的 thing,thing 中就有了 tangerine 这个成员变量。

2. `self.tangerine="And now a thousand years between"` 是在给当前的对象添加一个名称为`tangerine`的属性并赋初值 "And now a thousand years between"。

3. `Mystuff()` 括号里没有传入任何参数,是因为 Mystuff 类定义了 `__init__()` 方法,该方法已经包含了 `self`,也不需要其他参数输入。调用 `Mystuff() ` 方法即可返回一个实例化后的对象。

class Mystuff(object):
    def __init__(self, value):
      self.tangerine = value

thing = Mystuff("A new value")
print(thing.tangerine)# 输出:A new value


求最佳答案{:10_254:}

歌者文明清理员 发表于 2023-6-14 22:56:12

sfqxx 发表于 2023-6-14 22:36
1. 在定义类中,self 表示该类实例化后的对象本身。在这个实例化后的对象中,self 将指向当前对象本身,因 ...

:dy:
页: [1]
查看完整版本: 关于类里的__init__函数