|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Tickets:
adult_price = 100
now_adult = 120
child_price =50
new_child = 60
def __init__(self,adult,child):
self.adult = adult
self.child = child
def date_money(self):
day = input('请输入是否为工作日:Yes/No')
self.adult = int(input('请输入成年人数量:'))
self.child = int(input('请输入小孩数量:'))
if day == 'YES' or 'Yes' or 'yeS' or 'yES':
sun = self.adult_price * self.adult + self.child_price * self.child
print('%d个成年人和%d个小孩的票价总计为:'%(self.adult,self.child)+ str(sun))
else:
sun = self.now_adult * self.adult + self.new_child * self.child
print('%d个成年人和%d个小孩的票价总计为:' % (self.adult, self.child) + str(sun))
price1= Tickets()
price1.date_money()
1、请问,为什么我这个 def __init__(self,adult,child):会显示:
TypeError: __init__() missing 2 required positional arguments: 'adult' and 'child' 这个错误
2、初始化函数在什么情况下使用?
3、定义了一个类并且初始化_init__参数之后,在实例化对象后是否一定要传入参数?如:
class Tickets:
def __init__(self,adult,child):
self.adult = adult
self.child = child
price1= Tickets() ,这里是否一定要传入参数? 有什么办法直接实例化一个对象,不需要在括号里加入参数?
本帖最后由 jackz007 于 2024-4-15 12:08 编辑
只要为 __init__() 新增可选参数即可解决问题。
- class Tickets:
- adult_price = 100
- now_adult = 120
- child_price = 50
- new_child = 60
- sun = False
- def __init__(self , adult = 120 , child = 60 , sun = False): # 为 __init__() 增加 3 个可选参数
- self . adult = adult # 如果不指定,那么,self . adult 的缺省值是 120
- self . child = child # 如果不指定,那么,self . child 的缺省值是 60
- self . sun = sun # 如果不指定,那么,self . sun 的缺省值是 False (也就是工作日)
- def date_money(self):
- if self . sun :
- sun = self . adult_price * self . adult + self . child_price * self . child
- print('%d个成年人和 %d个小孩非工作日的票价总计为:' % (self . adult , self . child) + str(sun))
- else:
- sun = self . now_adult * self . adult + self . new_child * self . child
- print('%d个成年人和%d个小孩工作日的票价总计为:' % (self . adult , self . child) + str(sun))
- price1 = Tickets() # 用缺省值新建 Tickets 的对象 price1
- price1 . date_money()
- price2 = Tickets(30 , 130) # 用 adult = 30 , child = 130 , sun = False 新建 Tickets 的对象 price2
- price2 . date_money()
- price3 = Tickets(child = 20 , sun = True , adult = 10) # 用 adult = 10 , child = 20 , sun = True 新建 Tickets 的对象 price3
- price3 . date_money()
复制代码
|
|