HirasawaYui 发表于 2020-4-30 20:20:09

关于__init__(self)

class name:
    def __init__(self,arg):
      self.name = arg
    def say(self):
      print('我的名字是:{}'.format(self.name))

x = name('吉良吉影')
print('我的名字是{}'.format(x))
x.say()
print(type(x))


输出结果是
我的名字是<__main__.name object at 0x000001DB69664C10>
我的名字是吉良吉影
<class '__main__.name'>

1、为什么直接输出x会是<__ma......10>,但是x.say就可以输出字符串,不是都是print吗?还有<__ma......10>是个什么东西?

2、为什么在这里把x.say改成 say(x)会报错?

zltzlt 发表于 2020-4-30 20:22:30

1. 直接 str(name) 得到的结果就是那样,把第八行改成这样就可以了:

print('我的名字是{}'.format(x.name))    # 访问实例的属性 name

2. 没有定义过叫 say() 的函数,say() 方法在这里是只属于 name 的实例 x 的,所以要先加上 x. 再写 say()

KevinHu 发表于 2020-4-30 20:38:47

“x.say”也可以换成:
name.say(x)
调用x.say时python会自动帮你把前面的对象x填到第一个参数(self)里,这也是为什么每个对象的方法都要加一个参数self
页: [1]
查看完整版本: 关于__init__(self)