c皮皮o 发表于 2021-7-12 15:38:49

类和对象

class Ball:
    def setName(self,name):
      self.name=name
    def kick(self):
      print("我叫%s,该死的,谁踢我..."%(self.name))
为啥kick函数可以调用setName里的(self.name)变量,(self.name)不是一个局部变量吗?

逃兵 发表于 2021-7-12 15:38:50

因为有self,所以这实际上是个实例化变量

在实例化过程中,这个变量给予了实例化对象

实例化对象能调用所有的实例化变量和实例化方法

如果这么写的话就是局部变量了


class Ball:
    def setName(self,name):
      name=name
    def kick(self):
      print("我叫%s,该死的,谁踢我..."%(name))

Twilight6 发表于 2021-7-12 16:34:42


类体中,所有函数之外:此范围定义的变量,称为类属性或类变量;

类体中,所以函数内部:以 “self.变量名” 的方式定义的变量,称为实例属性或实例变量;

类体中,所有函数内部:以 “变量名=变量值” 的方式定义的变量,称为局部变量;

类变量 使用范围在所有实例之间同时共用;
实例变量 使用范围仅在某个实例本身中使用;
局部变量 只在局部作用范围使用;

页: [1]
查看完整版本: 类和对象