|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大佬,我遇到一个问题,是说:完成子类定制,使运行结果为:“雷猴,欢迎来到广东!”
class Chinese:
def __init__(self, greeting='你好', place='中国'):
self.greeting = greeting
self.place = place
def greet(self):
print('%s!欢迎来到%s。' % (self.greeting, self.place))
class Cantonese(Chinese):
#此处填写代码
yewen = Cantonese()
yewen.greet()
我的答案是:
def __init__(self):
Chinese.__init__(self,greeting='雷猴',place='广东')
标准答案是:
def __init__(self, greeting = '雷猴', place = '广东'):
Chinese.__init__(self, greeting, place)
两者运行后都能达到最终目的,我想问这两种写法有什么不一样吗?我会不会错了,只是凑巧在这个题目里面刚好对了?
本帖最后由 isdkz 于 2022-2-22 07:28 编辑
就比如说现在他想要一个新的实例,这个新的实例的greetf方法输出 “石猴!欢迎来到北京”,
注意,是一个新的实例,不是一个新的类。
因为你的答案的__init__方法中没法手动传入greeting,place属性,所以需要在类实例化后再对属性进行更改,
所以你的只能这么写class Chinese:
def __init__(self, greeting='你好', place='中国'):
self.greeting = greeting
self.place = place
def greet(self):
print('%s!欢迎来到%s。' % (self.greeting, self.place))
class Cantonese(Chinese):
def __init__(self):
Chinese.__init__(self,greeting='雷猴',place='广东')
# 注意下面这几行
shihou = Cantonese()
shihou.greeting = '石猴'
shihou.place = '北京'
shihou.greet()
而标准答案可以在初始化方法中传入greeting,place,所以标准答案那种只需要在实例化时候传入greeting,place就行class Chinese:
def __init__(self, greeting='你好', place='中国'):
self.greeting = greeting
self.place = place
def greet(self):
print('%s!欢迎来到%s。' % (self.greeting, self.place))
class Cantonese(Chinese):
def __init__(self, greeting = '雷猴', place = '广东'):
Chinese.__init__(self, greeting, place)
# 注意下面这几行
shihou = Cantonese('石猴', '北京')
shihou.greet()
|
|