class Book:
def autho(self,shuming,zuozhe,tuijie,jieyue):
self.shuming = shuming
self.zuozhe = zuozhe
self.tuijie = tuijie
self.jieyue = jieyue
pass
book = Book.autho('看不见的城市','卡尔维诺','献给城市的最后一首爱情诗','未借出')
print(book.autho(shuming))
不知道是什么原因一直报错 是哪里格式问题呢
类似下面这样:先初始化类对象,再调用autho函数,再打印输出
objbook=Book()
objbook.autho('看不见的城市','卡尔维诺','献给城市的最后一首爱情诗','未借出')
print(objbook.shuming)
先定义类的__init__
这样才是一个类型,而上述定义的autho
是一个方法
class book():
"""docstring for book"""
def __init__(self, a, b, c, d):
super(book, self).__init__()
self.a, self.b, self.c, self.d = \
a, b, c, d
b = book("a", "b", "c", "d")
print(b.a)
你这个方法要求四个参数,你只有一个,你确定参数是这样用的吗,你看下可变参数的知识
抛开不标准的对象定义,从上述文字中看,有两个错误:
(1)数量上未满足函数的关键性参数。
您的函数auto拥有5个关键性参数(self,shuming,zuozhe,tuijie,jieyue),在第一次调用(即语句book = Book.autho('看不见的城市','卡尔维诺','献给城市的最后一首爱情诗','未借出'))时,只传入了4个参数,不满足函数有5个参数的需求。
此时应报错:
TypeError: Book.autho() missing 1 required positional argument: 'jieyue'
第二次调用(即语句print(Book.autho(shuming)))时,只传入了1个参数,不满足函数有5个参数的需求。
(2)调用未定义、未声明的变量。
在语句print(Book.autho(shuming)中,变量名shuming并未定义。
欲解决如上错误,并使程序运行达到预期效果,建议:
(1)对于函数autho,传入5个参数。(其中,参数self传入Book,在后面就可以通过Book.value调用shuming等4个参数的内容)
如下所示
book = Book.autho(Book,'看不见的城市','卡尔维诺','献给城市的最后一首爱情诗','未借出')
(2)规范调用变量
如果要查看刚刚传入book的参数shuming的内容,可以将print(Book.autho(shuming))改变为:
print(Book.shuming)
此时,由于传参调用Book.autho()时在self位置传入了类对象Book,所以autho()执行完毕后在Book对象下新建变量shuming,并将参数shuming的内容赋值给Book.shuming,所以可以直接调用Book.shuming查看刚才对autho()传入的shuming参数。