前些天写了一些错误观点,太蠢了
之前是这么写的
class Book():
def __init__(self,identify='人民出版社',name,price):#尝试直接在定义参数时直接赋值类属性
self.name=name
self.price=price
self.identify=identify
def get(self):
print(self.identify)
A_book=Book('计算机类',50)
A_book.get()
会提示这样的错误SyntaxError: non-default argument follows default argument
非默认实参跟随默认实参 应该是不能这样做
然后换了一种方法
定义类的实例属性的时候是可以赋初始值的,之前以为不行,特此修正
它的规则和带有默认值的函数类似,在定义带有默认值函数时,默认值参数必须全部出现在未知参数右侧,任何一个默认值参数右边都不能再出现未知参数。给实例属性赋默认值也是如此
改正后的代码
class Book():
def __init__(self,name,price,identify='人民出版社',):#尝试直接在定义参数时直接赋值类属性
self.name=name
self.price=price
self.identify=identify
def get(self):
print(self.identify)
A_book=Book('计算机类',50)
A_book.get()
只要把identify=‘人名出版社’放在没有赋值的参数右边即可
执行结果
人民出版社
但是这样却定义的是一个实例属性,并不是类属性