类对象、类属性、类方法、静态方法

类对象、类属性、类方法、静态方法

类对象

我们在前面讲的类定义格式中,“class类名:”。实际上,当解释器执行class语句时,就会创建一个类对象。

#测试类对象的生成
class Student:
    pass

print(type(Student))
print(id(Student))

Stu2 = Student
S1 = Stu2
print(S1)

执行结果

<class 'type'>
1778915500424
<class '__main__.Student'>

可以看到实际上生成了一个变量名就是类名“Student”的对象。我们通过赋值给新变量Stu2,也能实现相关的调用。说明,确实创建了“类对象”。

类属性

类属性是从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对象,可以被所有实例对象共享。

类属性的定义方式:
    class 类名:
        类变量名 = 初始值

在类中或者类的外面,我们可以通过:“类名.类变量名”来读写。

class Student:
    company = "SXT"  # 类属性
    count = 0  # 类属性

    def __init__(self, name, score):
        self.name = name  # 实例属性
        self.score = score
        Student.count = Student.count + 1

    def say_score(self):  # 实例方法
        print("我的公司是:", Student.company)
        print(self.name, '的分数是:', self.score)


s1 = Student('张三', 80)  # s1是实例对象,自动调用__init__()方法
s1.say_score()

s2 = Student("高淇",60)
s3 = Student("高小希",100)

print('一共创建{0}个Student对象'.format(Student.count))

执行结果

我的公司是: SXT
张三 的分数是: 80
一共创建3个Student对象

类方法

类方法时从属于“类对象”的方法。类方法通过装饰器@classmethod来定义,格式如下:
        @classmethod
        def 类方法名(cls [,形参列表]) :
            函数体

要点如下:
1.@clsssmetod必须位于方法上面一行
2.对于给cls必须有;cls指的就是“类对象”本身;
3.调用类方法格式:“类名.类方法名(参数列表)"。参数列表中,不需要也不能给cls传值。
4.类方法中访问实例属性和实例方法会导致错误
5.子类继承父类方法时,传入cls所示子类对象,而非父类对象

#类方法使用测试
class Student:
    company = "尚学堂"  # 类属性

    @classmethod
    def printCompany(cls):
        print(id(cls))
        print(cls.company)


Student.printCompany()

print(id(Student))

执行结果

1738598859304
尚学堂
1738598859304

静态方法

Python中允许定义与“类对象”无关的方法,称为“静态方法”。

“静态方法”和在模块中定义普通函数没有区别,只不过“静态方法”放到了“类的名字空间里面”,需要通过“类调用”。

静态方法通过装饰器@staticmethod来定义,格式如下:
    @staticmethod
    def 静态方法名([形参列表]) :
        函数体

要点如下:
1.@staticmethod必须位于方法上面一行
2.调用静态方法格式:“类名.静态方法名(参数列表)”。
3.静态方法中访问实例属性和实例方法会导致错误

class Student:
    company = "SEX"

    @staticmethod
    def add(a,b):
        print("{0}+{1}={2}".format(a,b,(a+b)))
        return a+b


Student.add(20,30)

执行结果

20+30=50
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值