Python学习记录 类相关

2022.08.12 DAY28

类对象
  • 类对象

      class Student:
          pass  # 空语句
    
  • type 模具类

实例:

class Student:  # 类名首字母大写,多个单词驼峰原则

    def __init__(self, name, score):  # self必须位于第一个参数
        """ 构造函数 """
        self.name = name
        self.score = score

    def get_score(self):  # self必须位于第一个参数
        """ 获取分数信息 """
        print("{0}的分数为{1}".format(self.name, self.score))
        return self.score


def test():
    Stu = Student
    s1 = Student("YJP", 99)
    s2 = Stu("XX", 100)
    s1.get_score()
    s2.get_score()


if __name__ == '__main__':
    test()

结果:

YJP的分数为99
XX的分数为100
类属性
  • 类属性是属于“类对象”的属性,也称为“类变量”。由于类属性也属于类对象,可以被所有的实例对象共享。

  • 类属性的定义方法:

      class 类名:
          类变量名 = 初始值
    
  • 在类中或者类的外面,我们可以通过:类名.类变量名 来读写。

实例:

class People:

    company = "Embedded"  # 类属性
    count = 0  # 类属性

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

    def get_info(self):  # 实例方法
        print("------------------------------")
        print("- name    : {0}".format(self.name))
        print("- age     : {0}".format(self.age))
        print("- score   : {0}".format(self.score))
        print("- company : {0}".format(self.company))
        print("- count   : {0}".format(self.count))
        print("------------------------------")


def test2():
    p1 = People("YJP", 21, 99)
    p1.get_info()

if __name__ == '__main__':
    test2()

结果:

------------------------------
- name    : YJP
- age     : 21
- score   : 99
- company : Embedded
- count   : 1
------------------------------
类方法
  • 类方法是从属于“类对象”的方法。

  • 类方法通过装饰器@classmethod来定义,格式如下:

      @classmethod
      def 类方法名(cls, [形参列表]):
          函数体
    
  • 要点:

    • @classmethod必须位于方法上面的第一行。
    • 第一个cls必须要有,cls指的就是类对象本身。
    • 调用格式:类名.类方法名(参数列表)
    • 类方法中访问实例属性和实例方法会导致错误。
    • 子继承父类方法时,传入cls是子类对象。

实例:

class Human:
    base = "碳基生命体"  # 类属性

    @classmethod
    def get_base(cls):
        print(cls.base)


if __name__ == '__main__':
    Human.get_base()

结果:

碳基生命体
静态方法
  • Python中允许定义与类对象无关的方法,称为静态方法。

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

  • 静态方法通过装饰器@staticmethon来定义,格式如下:

      @staticmethod
      def 类方法名([形参列表]):
          函数体
    
  • 要点:

    • @staticmethod必须位于方法上面的第一行。
    • 第一个cls必须要有,cls指的就是类对象本身。
    • 调用格式:类名.静态方法名(参数列表)
    • 静态方法中访问实例属性和实例方法会导致错误。

实例:

class Human:
    base = "碳基生命体"  # 类属性

    @classmethod  # 类方法
    def get_base(cls):
        """ 打印信息 """
        print(cls.base)

    @staticmethod
    def add(number1, number2):  # 静态方法
        """ 加法计算 """
        sum = number1 + number2
        print("计算:S{0} + {1} = {2}".format(number1, number2, sum))
        return sum


if __name__ == '__main__':
    Human.get_base()
    Human.add(45, 55)

结果:

碳基生命体
计算:S45 + 55 = 100
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值