Python类变量,__slots__列表,类方法@classmethod,静态方法@staticmethod

Python类变量,__slots__列表,类方法@classmethod,静态方法@staticmethod

类变量: class variable(也叫类属性)

类变量是类的属性,此属性属于类

作用:用来记录类相关的数据

说明:

类变量可以通过类直接访问

类变量可以通过类的实例直接访问

类变量可以通过此类的实例的__class__属性间接访问

如:

class Human:

cout = 0 #创建类变量

print(Huname.cout) #0

h1 = Human()

print(h1.cout) #0

h1.count = 100

print(Huname.cout) #0

print(h1.cout) #100

h1.__class__.count += 1

print(Huname.cout) #1

print(h1.cout) #100

类的__slots__列表

作用:

限定一个类的实例只能有固定的属性(实例变量)

通常为防止错写属性名而发生运行时错误

说明:

含有__slots__列表的类创建的实例对象没有__dict__属性,即此实例不用字典来保存对象的属性(实例变量)

语法:

class Student:

__slots__ = ['name','score']  #此语句代表只允许这个类的实例有 name 和 score属性,当添加其他属性时,会报错

def __init__(self,name,score):

self.name = name

self.score = score

类方法 @classmethod

类方法是描述类的行为的方法,类方法属于类

说明:

类方法需要用@classmethod 装饰器定义

类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls'

类和该类的实例都可以调用类方法

类方法不能访问此类创建的实例的属性(只能访问类变量)

语法:

class Car:

count = 0

@classmethod

def getTotalCount(cls):

return cls.count

print(Car.getTotalCount()) #用类来调用类方法

静态方法 @staticmethod

静态方法不属于类,也不属于类的实例,它相当于字义在类内的普通函数,只是它的作用域属于类

语法:

class A:

@staticmethod

def myadd(x, y):

return x + y

print(A.myadd(1,2))


最后编辑于:2019/09/14作者: 牛逼PHP

发表评论