Python中的类属性和类方法

类属性和实例属性

实例属性定义:

通过类创建对象的过程称为实例化,所以实例就是对象
当我们通过对象或者在类里通过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地址–>类属性类方法代码地址

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值