对类的属性加上self后报错。
本帖最后由 KONGYIYAO 于 2021-3-6 20:28 编辑class Person:
self. name = '小甲鱼'
def printName(self):
print(self.name)
这段代码会报错:NameError: name 'self' is not defined是什么原因?
属性是不需要加上self的吗 没报错啊
class Person:
name = '小甲鱼'
def printName(self):
print(self.name)
p = Person()
p.printName() hrp 发表于 2021-3-6 20:25
没报错啊
我打错了,你再看看,self.name='小甲鱼'。
我应该是分不清什么时候需要加self,什么时候不需要加self 本帖最后由 逃兵 于 2021-3-6 21:12 编辑
构造方法
def __init__(self):
这里用self
class Person:
def __init__(self):
self. name = '小甲鱼'
def printName(self):
print(self.name)
>>> a = Person()
>>> a.printName()
小甲鱼 逃兵 发表于 2021-3-6 21:05
构造方法
def __init__(self):
所以是只有在定义方法时才需要加self吗? 定义属性的时候不要加上? KONGYIYAO 发表于 2021-3-6 21:07
所以是只有在定义方法时才需要加self吗? 定义属性的时候不要加上?
def __init__(self):
就是用来定义属性的
它的名称叫做构造函数或者构造方法 http://c.biancheng.net/view/4533.html 逃兵 发表于 2021-3-6 21:09
def __init__(self):
就是用来定义属性的
构造方法和在类中直接定义属性有什么区别。比如:
name=‘小甲鱼’
和def __init__(self,name):
self.name=name之间的区别
类在实例化时,会调用构造函数
class Person():
def __init__(self,name='小甲鱼'):
self.name = name
def printName(self):
print(self.name)
class Person2():
name = '小甲鱼'
def printName(self):
print(self.name)
>>> a = Person()
>>> b = Person2()
>>> c = Person('小王八')
>>> d = Person2('小王八')
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
d = Person2('小王八')
TypeError: Person2() takes no arguments
>>> a.name
'小甲鱼'
>>> b.name
'小甲鱼'
>>> c.name
'小王八'
页:
[1]