Python3 —— 类中静态方法、类方法、属性修饰符的使用

不同于 C# 和 Java 这种语言的get , set属性定义,Python 是用@property声明属性, 具体用法如下:

'''
@classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
'''
class Person(object):
    '人的基类'  # 类文档字符串
    name = 'liming'  # 类变量 (可以给直接被类本身调用)
    sex = 'male'
    __addr = 'beijing'
    def __init__(self, name, age):  # 类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
        self.name = name  # 实例变量
        self.age = age
        self.__job = 'doctor'  # 私有变量

    # 实例化方法(必须实例化类之后才能被调用)
    def sleep(self):   # self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
        self.sex = 'female'
        print("%s is sleeping" % self.name)

    @staticmethod  # 静态方法 实际上个跟类没什么关系,需传 self 参数
    def eat(self):
        print("%s is eating %s, sex is %s" % (self.name, 'apple', self.sex))

    @classmethod  # 类方法 调用类变量 (不需要实例化类就可以被类本身调用)
    def drink(cls):
        print("%s is drinking %s, sex is %s" % (cls.name, 'cola', cls.sex))

    @property  # 属性
    def career(self):
        print("%s has a %s job" % (self.name, self.__job))
    @career.setter  # 给属性赋值
    def career(self, job):
        self.__job = job
        print("set %s job is %s" % (self.name, self.__job))
    @career.deleter  # 删除属性
    def career(self):
        del self.__job
        print("删完了")

if __name__ == '__main__':
    print('Person: ', Person.__doc__)
    print('类变量:', Person.name, Person.sex)
    jack = Person('jack', 18)  # 类的实例化
    amy = Person('amy', 18)  # 类的实例化
    print('对象访问私有类变量:', jack._Person__addr)
    jack.sleep()  # 实例化方法(必须实例化类之后才能被调用)
    jack.eat(amy)  # 静态方法的调用 需传[参数]
    jack.eat(jack)
    Person.eat(jack)
    jack.drink()  # 类方法的调用 用类变量
    Person.drink()
    jack.career  # 属性的调用
    jack.career = 'IT'  # 属性的修改
    jack.career  # 属性修改后的调用
    del jack.career  # 属性的删除

运行结果:

Person:  人的基类
类变量: liming male
对象访问私有类变量: beijing
jack is sleeping
amy is eating apple, sex is male
jack is eating apple, sex is female
jack is eating apple, sex is female
liming is drinking cola, sex is male
liming is drinking cola, sex is male
jack has a doctor job
set jack job is IT
jack has a IT job
删完了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值