鱼C论坛

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

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

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

使用道具 举报

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

使用道具 举报

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

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

p=person()
print(p.age)
这样可以调用类属性的,为什么这里就不行了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

        可以呀,试试下面的代码呢
  1. class Person :
  2.     age = 10
  3.     @classmethod               # 必须把需要调用的方法声明为类方法
  4.     def eat(cls , abc) :       # 类方法传入的第一个参数不再是 self,而是类句柄 cls   
  5.         print('在吃饭' , abc)
  6.         print(cls . age)       # 属性 age 属于 Person 类,
  7. p = Person()
  8. p . eat(456)
  9. print(p . age)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

        print(cls . age)       # 属性 age 属于 Person 类,
print(self.age)
这里person.eat传参数123 作为实例123,就类似123.age 这里不能引用person里面的age吗
小甲鱼最新课程 -> https://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,道理很简单,因为,这代表它们是不同的个体。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 05:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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