类属性和实例属性
实例属性定义:
通过类创建对象的过程称为实例化,所以实例就是对象
当我们通过对象或者在类里通过self绑定的属性称为实例属性
例如:
# 定义一个people类
class People(object):
def __init__(self):
# 通过self绑定实例属性
self.name = "张飞"
peo = People()
# 通过对象绑定实例属性
peo.age = 18
print(dir(peo))
输出结果:
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name']
通过dir()方法,我们能看到在People类中包含有self绑定的name属性和通过对象绑定的实例属性
类属性定义
在类(class)上绑定的属性称之为类属性,类属性归类所有.
语法:
class 类名():
属性名 = 值
类属性访问:
类名.属性名
对象.属性名 对象没有相同属性名时,才能使用
修改:
类名.属性名 = 值
注意:
类属性,类的实例也可以使用
使用 对象.属性 时,优先去寻找对象属性,如果找不到,会去寻找类属性
修改时,对象属性是不能去修改类属性的
例如
class Man(object):
sex = '男'
Man.sex = '女'
man = Man()
print(man.sex)
man.sex = '中' # 修改时,对象属性不能修改类属性
print(man.sex)
man2 = Man()
print(man2.sex)
print(Man.sex)
输出结果:
女 # 类属性被类修改
中
女
女
类方法
定义
在python语法中,万物皆对象.所有python的类也是一个对象,称之为类对象.既然类也是一个对象,就可以给类对象上添加方法,这个方法称为类方法
使用
被所有对象共享,所有实例都可以调用类方法
类方法,可以不通过创建实例,直接调用,多用来操作类属性
类方法,只需要在定义之前,加上一行 @classmethod
类方法,默认保留的参数是 cls, 传入的是 类 这个对象
例如:
class Women(object):
@classmethod
def age(cls):
print("我是类方法")
# 直接通过类调用方法
Women.age()
# 通过创建实例调用方法
women = Women()
women.age()
输出结果:
我是类方法
我是类方法
类方法的使用好处:
类方法不用创建对象直接可以通过类名调用,简单方便
为了起到对类属性的保护作用,通常将类属性设置为私有的,再通过类方法来获取和设置类属性
如有需要代码,请点击git地址–>类属性类方法代码地址