鱼C论坛

 找回密码
 立即注册
查看: 464|回复: 5

[已解决]这里实例方法当做函数调用 为什么报错

[复制链接]
发表于 2024-4-18 22:04:18 | 显示全部楼层 |阅读模式
10鱼币
最佳答案
2024-4-18 22:04:19
本帖最后由 jackz007 于 2024-4-18 22:21 编辑
class Person :
    age = 10
    @classmethod               # 必须把需要调用的方法声明为类方法
    def eat(cls , abc) :       # 类方法传入的第一个参数不再是类实例句柄 self,而是类句柄 cls    
        print('在吃饭' , abc)
        print(cls . age)       # 通过类句柄 cls 访问类属性 age 
Person . eat(456)              # 直接调用类方法
屏幕截图 2024-04-18 220314.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-18 22:04:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2024-4-18 22:21 编辑
class Person :
    age = 10
    @classmethod               # 必须把需要调用的方法声明为类方法
    def eat(cls , abc) :       # 类方法传入的第一个参数不再是类实例句柄 self,而是类句柄 cls    
        print('在吃饭' , abc)
        print(cls . age)       # 通过类句柄 cls 访问类属性 age 
Person . eat(456)              # 直接调用类方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-4-18 22:21:02 | 显示全部楼层

记得 实例属性不是可以继承类属性的吗,比如
class person:
    age = 5

p=person()
print(p.age)
这样可以调用类属性的,为什么这里就不行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-18 22:24:35 | 显示全部楼层
本帖最后由 jackz007 于 2024-4-18 22:27 编辑
lc88824 发表于 2024-4-18 22:21
记得 实例属性不是可以继承类属性的吗,比如
class person:
    age = 5

        可以呀,试试下面的代码呢
class Person :
    age = 10
    @classmethod               # 必须把需要调用的方法声明为类方法
    def eat(cls , abc) :       # 类方法传入的第一个参数不再是 self,而是类句柄 cls    
        print('在吃饭' , abc)
        print(cls . age)       # 属性 age 属于 Person 类, 
p = Person()
p . eat(456)
print(p . age)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-4-18 22:27:29 | 显示全部楼层

        print(cls . age)       # 属性 age 属于 Person 类,
print(self.age)
这里person.eat传参数123 作为实例123,就类似123.age 这里不能引用person里面的age吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-18 22:36:06 | 显示全部楼层
本帖最后由 jackz007 于 2024-4-18 22:37 编辑
lc88824 发表于 2024-4-18 22:27
print(cls . age)       # 属性 age 属于 Person 类,
print(self.age)
这里person.eat传参数1 ...


         self 只能出现在类定义的内部,用来代表访问属性、方法的对象本身,不可以出现在类定义以外的任何地方,此外,尽管有时候某个对象的 self 可能是 123,但是,并不意味着可以用 123 来代替这个 self,因为,每一个对象都有自己不同的 self,道理很简单,因为,这代表它们是不同的个体。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表