python类方法和类属性

# 类属性,定义在类里面,方法的外面,不需要实例化类就可以直接使用
# 调用的时候使用 类.属性名
class dog:
    name = '哈士奇:汪!'  #类属性定义,不需要self关键字,类似于定义变量
    def __init__(self):
        pass
print(dog.name) #调用类属性,不需要实例化可以直接调用
dog.name = '秋田:汪!' #类属性赋值
print(dog.name)

# **********************************************************
# 类方法,用@classmethod修饰的方法
# 类方法第一个参数必须是cls,内部使用属性用 cls.类属性名 来调用

class cat:
    name = '折耳猫,瞄~' #定义类属性
    @classmethod #类方法修饰
    def set_name(cls,name): #通过类方法的形参修改类属性name的值
        cls.name = name
    def __init__(self): #在类方法中无法访问普通属性age
        self.age = 20
    def demo(self): #在类方法中无法访问普通方法demo,只能使用类方法
        print('这是一个普通方法')

print(cat.name) #显示类属性的值
cat.name = '小橘猫,瞄~' #修改类属性的值
print(cat.name)
cat.set_name('小白猫,瞄~')
print(cat.name)

# **********************************************************
# 类方法类属性练习
class person:
    name = 'tony老师'
    @classmethod
    def get_name(cls):
        return cls.name
    def __init__(self):
        self.age = 12
    def get_age(self):
        return self.age
print(person.get_name())
# 把neme的值改为kevin
person.name = 'kevin老师'
# 调用类方法get——name,显示name的值
print(person.get_name())
# 要把普通属性age的值改为20
p = person() #普通属性需要先将类实例化
p.age = 20
# 调用普通方法get——age显示age的值
print(p.get_age())

# **********************************************************
# 普通方法中使用类属性和类方法
# 调用格式 类名.类属性或类方法
class sheep: #定义类
    sing = '咩' #定义类属性
    @classmethod #定义类方法
    def jump(cls):
        return cls.sing #类方法内部调用类属性
    def run(self): #定义普通方法
        sheep.sing = 'mie' #类属性在普通方法中重新赋值
        print(sheep.jump()) #普通方法中调用类方法
s = sheep()
s.run()

# **********************************************************
# 统计类的实例化次数
class demo:
    index = 0
    @classmethod
    def count(cls):
        return cls.index
    def __init__(self):  #实例化的时候调用
        demo.index = demo.index + 1 #每次调用index自动+1
d = demo()
d = demo()
d = demo()
d = demo()
d = demo()
print(d.count()) #结果为5

# **********************************************************
#静态方法,使用@staticmethod定义,不需要实例化
# 不能访问类中的其他成员,主要解决方法重名的问题
class dog:
    @staticmethod #定义静态方法
    def run():
        print('跑步')
dog.run() #调用静态方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值