四时宝库

程序员的知识宝库

python class 基础知识(python class详解)

类的概述

  1. 类是对数据和函数的封装。
  2. 创建一个类就是创建了一个新的数据类型。
  3. 类的实例通过属性来显示它的状态。
  4. 类可以通过方法(函数)来修改它的状态。

创建一个简单的类

class Human:
    age = 0

    def getAge(self):
        return self.age


if __name__ == '__main__':
    # 创建一个 Human 类的实例
    h1 = Human()
    # 打印默认的年龄属性
    print(h1.getAge())
    # 修改实例的年龄属性
    h1.age = 100
    # 打印修改后的年龄属性
    print(h1.age)

使用构造方法创建实例

  1. 如果没有显示的构造方法,python在实例化时会调用默认的构造方法,我们可以根据需要显示的定义构造方法
  class Human:
      age = 0

      # 定义构造方法,初始化年龄属性
      def __init__(self, age):
          self.age = age

      def getAge(self):
          return self.age


  if __name__ == '__main__':
      # 创建一个 Human 类的实例
      h1 = Human(30)
      # 打印默认的年龄属性
      print(h1.getAge())
      # 修改实例的年龄属性
      h1.age = 100
      # 打印修改后的年龄属性
      print(h1.age)
  1. 定义了构造方法后,默认的构造方法就会被隐藏,在实例化对象的时候,一定要根据构造方法的参数列表传递参数,否则会创建对象失败。

创建多个构造方法

因为python不支持重载,所以定义两个"init_""方法时无效的,后面的会覆盖前面的

class Human:
    age = 0
    name = ""

    # 定义构造方法,初始化姓名和年龄属性
    def __int__(self, name, age):
        self.name = name
        self.age = age

    # 定义构造方法,初始化年龄属性
    def __init__(self, age):
        self.age = age

    def getAge(self):
        return self.age


if __name__ == '__main__':
    h2 = Human("tom",50)
    print(h2.age)


打印结果:

输出结果报错

h2 = Human("tom",50)

TypeError: Human.__init__() takes 2 positional arguments but 3 were given


可以使用python自带的装饰器classmethod来修复这个问题

class Human:
    age = 0
    name = ""

    # 定义构造方法,初始化姓名
    @classmethod
    def createHuman(cls, name):
        return cls(name, 0)

    # 定义构造方法,初始化姓名和年龄属性
    def __init__(self, name, age):
        print("调用Human的构造方法")
        self.name = name
        self.age = age

    def getAge(self):
        return self.age


if __name__ == '__main__':
    h1 = Human.createHuman("tom")
    print(h1.age, h1.name)
    h2 = Human("jack", 50)
    print(h2.age,h2.name)

打印结果:

调用Human的构造方法

0 tom

调用Human的构造方法

50 jack

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接