实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,也就是成员变量。

实例方法:在类中声明的方法,例如:my(self),必须实例化之后才可以使用,否则会报错。

类变量:公共的变量,每个实例都可以用。

类方法

         1、不用实例化就可以直接调用。

         2、它可以通过cls使用类变量

         3、它不能调用这个类里面的其他实例方法和实例变量

静态方法

         #你不想实例化的时候,就可以定义成类方法

      #静态方法就是一个普通函数,只不过是写在类里面而已,它用不了类变量、类方法、实例变量、实例方法

下面从实例中了解这几个知识点的具体用法,代码如下:


class Baby():
    nationality = 'China' #类变量,公共的变量,每个实例都可以用
    def __init__(self,name):   #带了self的都是实例方法,必须实例化了之后才能调用,否则会报错
        self.name = name实例变量,也叫成员变量
        print('self的内存地址',id(self))
    def cry(self):           #实例方法'哇哇哇')

    @property   #这是一个装饰器,也叫属性方法,hhh函数就不能传参数了。如果函数没有入参就可以写property,调用的时候不能加括号了。
    def hhh(self):
        return 198
# b = Baby()
# print(b.hhh)       #调用的时候不能加括号,看起来像属性的一个方法。

    @classmethod           #类方法'我是类方法')
      #  print(cls.name)  cls不能调用实例变量,会报错
      #  cls.cry()        cls不能调用实例方法,会报错

    @staticmethod        #静态方法'这个是静态方法,它和一个没写在类里面的函数一样')
 
 
##############静态方法调用#############
Baby.xh()

###############类变量调用#############
Baby.nationality='USA'   #类变量是可以直接通过类名.xxx来进行修改的。

dcg = Baby()
dcg.nationality = 'Japan'     #不会改变类变量的值,只是改变了dcg这个实例中nationality的值
print(dcg.nationality)
yjt = Baby()
print(yjt.nationality)

############装饰器,属性方法#############
b = Baby()
print(b.hhh)    #调用时直接对象.函数名,不需要加括号,看起来像属性的方法

##############self###############
dcg = Baby('春光')
print('董春光的内存的',id(dcg))
zll = Baby('张流量')
print('董春光的内存的',id(zll))

>>>self的内存地址 7338696
   董春光的内存的 7338696
   self的内存地址 7338920
   张流量的内存的 7338920