python中__init__函数提问(菜鸟提问)
在Pyhton中,创建一个类,同时创建他的构造函数(__init__),在构造函数下创建实例对象,为什么要加self.例如:
Class Bird():
def __init__(self):
self.name='小鸟'
Class Bird():
def __init__(self):
name='小鸟'
上面两个代码有什么区别? 底下是错误的写法,类的私有属性必须加self关键字 实例化一个Bird对象我bird = Bird()
第二个无法通过bird.name 来访问name属性
要访问需要在类内部调用super().name
也就是说,不带self的属性属于最原始的父类,可以说不会被子类继承,但是子类仍然可以访问父类属性 一个是实例对象的属性,一个是类对象的属性,OK ? 本帖最后由 gopythoner 于 2017-7-17 15:34 编辑
看看效果,再看疗效
class Bird():
def __init__(self):
self.name='小鸟'
year = 100
def test(self):
print(self.name)#这里可以直接使用,self.name
print(year) #这里就不能使用,强行打印会报错
b = Bird()
b.test()
看输出,是不是下面那个打印报错了
小鸟
Traceback (most recent call last):
File "python", line 11, in <module>
File "python", line 8, in test
NameError: name 'year' is not defined
通俗来讲,加了self的属性就是可以直接传递下去,让类的其他函数都能直接引用
页:
[1]