lc88824 发表于 2024-4-20 17:02:41

实力方法使用类调用为什么报错

isdkz 发表于 2024-4-20 17:02:42

本帖最后由 isdkz 于 2024-4-20 19:08 编辑

因为 13 不是 Person,也不是 Person 的实例,自然也就没有 age 属性了,所以你当然不能传 13 进去,修改如下:

class Person():
    age = 18
    def shilifangfa(self) :
      print(self.age)

p = Person()

Person.shilifangfa(p)
# 或
Person.shilifangfa(Person)

jackz007 发表于 2024-4-20 18:04:27

本帖最后由 jackz007 于 2024-4-20 18:07 编辑

class Person() :
    age = 18
    @classmethod                # 添加类方法声明
    def fangfashili(cls , age = 18) :
      cls . age = age
      print(cls . age)
Person . fangfashili(15)

lc88824 发表于 2024-4-20 18:06:23

jackz007 发表于 2024-4-20 18:04


我知道这样可以,我的意思是我那种为什么报错,背后的逻辑是什么有点搞不懂

jackz007 发表于 2024-4-20 18:09:35

lc88824 发表于 2024-4-20 18:06
我知道这样可以,我的意思是我那种为什么报错,背后的逻辑是什么有点搞不懂

      背后的逻辑很简单,就是因为缺少这个声明,致使 fangfashili() 不允许被当作类方法进行调用。

一位小白 发表于 2024-4-25 20:54:43

因为你Person没有实例化(有self不实例化会报错),而且shilifangfa的self不是参数
页: [1]
查看完整版本: 实力方法使用类调用为什么报错