美文网首页
创建Python类的7个层次

创建Python类的7个层次

作者: Python_Camp | 来源:发表于2022-10-04 10:23 被阅读0次

创建Python类的7个层次

  1. 数据类--不使用__init__创建类
  1. 基本类
    我们能写的最简单的类。
class Dog:
    pass
dog = Dog()   
# initializing # 初始化
  1. 带有基本方法的基本类
    与其使用pass,什么也不做,不如添加一个简单的方法。
class Dog:
    def bark(self):
        print("woof")
dog = Dog()
dog.bark()   # woof
  1. 带有init方法的基本类

让我们添加一个__init__魔法方法,它允许我们定制我们的类,并为某些属性分配不同的值。


class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def bark(self):
        print("woof)
        
dog1 = Dog("rocky", 4)   
# name="rocky" age=4

dog2 = Dog("lucky", 5)   
# name="lucky" age=5
  1. 继承于另一个类的类

通过使用class Dog(Animal)语法,我们使Dog类继承于Animal类。这意味着,动物类中的任何属性或方法也会在狗类中出现。

class Animal:
    def speak(self):
        print("hello")
class Dog(Animal):
    pass
dog = Dog()
dog.speak()   # hello
  1. __init__继承于另一个类的类

如果我们的子类有一个不同于父类的__init__方法,我们可以在子类中使用super().__init__。这实质上是在子类的 __init__方法中调用父类的__init__方法。

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width
    def area(self):
        return self.length * self.width
        
class Square(Rectangle):
    def __init__(self, length):
        super().__init__(length, length)   
        # Rectangle's __init__

在这里,在 Square 的 __init__函数中,我们调用了super().__init__函数,它本质上就是 Rectangle 的 __init__函数。由于在 Square 中 length==width,我们将 length 传递两次到super().__init__

r = Rectangle(5, 4)
r.area()   # 20
s = Square(3)
s.area()   # 9
  1. 数据类

厌倦了写__init__方法?试试数据类。


from dataclasses import dataclass
@dataclass
class Dog:
    name: str
    age: int
    def bark(self):
        print(f "woof name={self.name} age={self.age}")
dog = Dog("rocky", 4)
dog.bark() # woof name=rocky age=4
  1. 从type()创建一个类

考虑一下下面这个继承自Animal的普通Dog类。

class Animal:
    def speak(self):
        print("hello")
class Dog(Animal):
    def __init__(self, name, age):
        self.name = name
        self.age = age

我们可以不使用class关键字来创建狗类--我们可以使用type()函数来代替。

def init(self, name, age):
    self.name = name
    self.age = age

这一行创建了狗类

# class = type(classname, bases, dict)
狗 = type("Dog", (Animal,), {"__init__":init})
dog = Dog("rocky", 4)

结语
希望这篇文章对你有帮助,有参考价值

本文由mdnice多平台发布

相关文章

  • 创建Python类的7个层次

    创建Python类的7个层次 数据类--不使用__init__创建类 基本类我们能写的最简单的类。 带有基本方法的...

  • Python类Class

    创建方式 创建Python类 打开Run Module界面 Python类使用 Python类的init功能

  • Python类的构造与初始化

    在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象。 python中创建...

  • python 创建类

    python算是面向对象语言,由于是动态语言,没有接口的概念。类的定义示例如下: 所有的函数第一个参数都是self...

  • python 类的使用

    创建实例 说明:关于类的这部分,我参考了《Learning Python》一书的讲解。 创建类 创建类的方法比较简...

  • 面试常考(python)

    Python语言特性 1.Python的函数参数传递 2.元类 metaclass metaclass 允许创建类...

  • 标准异常总结

    以下是 Python 内置异常类的层次结构: BaseException +-- SystemExit +-- K...

  • Netty学习--引导

    Bootstrap 类 引导类的层次结构注:为什么引导类是Cloneable 的?只会创建引导类实例的EventL...

  • python对象

    1. 创建 Python 类python 3 最简单的类就像这样 类定义以class关键字开始,接着是用于识别类的...

  • Python学习(八)

    异常处理 Python中的异常类型总结: Python内置异常类的层次结构: 异常检测 try-except语句 ...

网友评论

      本文标题:创建Python类的7个层次

      本文链接:https://www.haomeiwen.com/subject/zcuyartx.html