lc88824 发表于 2024-4-18 22:04:18

这里实例方法当做函数调用 为什么报错

jackz007 发表于 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)            # 直接调用类方法

lc88824 发表于 2024-4-18 22:21:02

jackz007 发表于 2024-4-18 22:17


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

p=person()
print(p.age)
这样可以调用类属性的,为什么这里就不行了

jackz007 发表于 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)

lc88824 发表于 2024-4-18 22:27:29

jackz007 发表于 2024-4-18 22:24


      print(cls . age)       # 属性 age 属于 Person 类,
print(self.age)
这里person.eat传参数123 作为实例123,就类似123.age 这里不能引用person里面的age吗

jackz007 发表于 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,道理很简单,因为,这代表它们是不同的个体。
页: [1]
查看完整版本: 这里实例方法当做函数调用 为什么报错