关于类名直接调用实例方法

 
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,该参数可以实例,也可以是数字或字符串等

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值