class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print('Parent')
def bar(self, message):
print("%s from Parent" % message)
class FooChild(FooParent):
def __init__(self):
# super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类 FooChild 的对象转换为类 FooParent 的对象
super(FooChild, self).__init__()
print('Child')
def bar(self, message):
super(FooChild, self).bar(message)
print('Child bar fuction')
print(self.parent)
FooChild().bar("nanbenyang") # FooChild.bar("nanbenyang") 报错,缺少参数
print(FooChild.bar)
# 输出结果F
# Parent
# Child
# nanbenyang from Parent
# Child bar fuction
# I'm the parent.
class CLanguage:
def info(self):
print("我正在学 Python")
#通过类名直接调用实例方法
CLanguage.info(FooChild()) # 如果不装参数FooChild(),则会报错:缺少参数
# 这里会出现警告,预期的类型为“CLanguage”,却得到了“FooChild”
# 输出结果
# Parent
# Child
# 我正在学 Python
class person:
def func1(self):
print("nanbenyang")
return "测试"
#1
print(person.func1(person()))
# print(person.func1(1)) print(person.func1("hgh"))与上述例子输出结果一样,但会出现预期类型和实际类型不符的警告
#2
a=person()
print(a.func1())
# print(a.func1(a)) # 报错,参数过多
# 第二个例子与第三个例子含义相同,都是实例化person后调用func1方法
#3
print(person().func1())
# 三个例子输出结果都为
# nanbenyang
# 测试
总结
通过实例调用实例方法,python会直接把实例赋给实例方法中的self。
通过类名调用实例方法,需要装载参数,该参数代表的是实例方法中的self,该参数可以实例,也可以是数字或字符串等