python类中方法的参数为什么可以调用自己的方法
class OldboyPeople:
"""由于学生和老师都是人,因此人都有姓名、年龄、性别"""school = 'oldboy'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
class OldboyStudent(OldboyPeople):
def choose_course(self): print('%s is choosing course' % self.name)
class OldboyTeacher(OldboyPeople):
def score(self, stu_obj, num): print('%s is scoring' % self.name)
stu_obj.score = num
stu1 = OldboyStudent('tank', 18, 'male')
tea1 = OldboyTeacher('nick', 18, 'male')
tea1.score(stu1, 99)
比如这段代码里面,为什么tea1用自己的score方法,第一个参数必须要是stu1对象,还有stu_obj.score = num 这句没看懂,自己的参数调用自己?
回答:
- 第1个问题
为什么tea1用自己的score方法,第一个参数必须要是stu1对象?
第一个参数不是必须是stu1对象,你可以在你的代码下面加上下面的代码试试
python">class A(): pass
a = A()
tea1.score(a, 99)
上面的代码是OK的!
- 第2个问题
stu_obj.score = num
这句没看懂,自己的参数调用自己?
首先你要明确stu_obj
是一个对象,在你的例子中它是一个OldboyStudent
对象,我的第1个问题中是A类的对象,其实在python
中,万物皆对象。stu_obj.score = num
的意思你的理解有些问题,它有两层基础含义:
- 如果
stu_obj
对象没有score
这个属性,则为这个stu_obj
对象创建一个属性叫score
,并初始化为num,其类型与num一致 - 如果
stu_obj
对象有score
这个属性,则将他更新为num,其类型任然与num一致,不管score
原来是什么类型,这里score
会被直接替换为num,如:
class OldboyTeacher(OldboyPeople): def score(self, stu_obj, num):
print('%s is scoring' % self.name)
stu_obj.score = num
print(stu_obj.score)
class A():
def __init__(self):
self.score = ()
if __name__ == '__main__':
stu1 = OldboyStudent('tank', 18, 'male')
tea1 = OldboyTeacher('nick', 18, 'male')
tea1.score(A(), 99)
这里面还涉及一些其它python的相关的东西,由于篇幅,我就不多解释了。
以上是 python类中方法的参数为什么可以调用自己的方法 的全部内容, 来源链接: utcz.com/p/937823.html