为了账号安全,请及时绑定邮箱和手机立即绑定

关于类方法无法获得任何实例变量,只能获得类的引用

课程中说:“因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。”这句话怎么理解?下面是我的理解不知道对不对。

非实例上调用是不能p1.how_many()这样调用吗?

p1 = Person('Bob')中p1是实例变量,"无法获得任何实例变量"是什么意思?

Person.how_many()是类的引用(类Person引用了how_many()方法这样子理解吗?)


正在回答

3 回答

  1. p1.how_many()是不能这样调用的,因为how_many()是类方法,只能通过类上调用,比如说Person.how_many()
  2. https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
    建议你去这个网站学习
0 回复 有任何疑惑可以回复我~
#1

T松子 提问者

但是你看下面的截图,是可以调用的
2019-02-01 回复 有任何疑惑可以回复我~
class Person(object):
    __count = 0

    def __init__(self, name):
        self.name = name
        Person.__count += 1

    @classmethod
    def get_name(self):
        return self.name

    @classmethod
    def how_many(cls):
        return cls.__count

p1 = Person('Bob')

print(p1.get_name())#这句代码报错:AttributeError: type object 'Person' has no attribute 'name'意思很明显了,这个类方法获取不到你创建的实力的属性变量,比如name,birth啊
并不意味着你创建的实例无法调用类方法
print(p1.how_many())


0 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5c53a70100012ebb08670634.jpg

这个截图中p1是可以调用how_many()的

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

关于类方法无法获得任何实例变量,只能获得类的引用

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信