速战速决 Python - python 类: 基础

速战速决 Python https://github.com/webabcd/PythonSample
作者 webabcd

速战速决 Python - python 类: 基础

示例如下:

class/class1.py

class Class1:

    # 双下划线开头用于定义私有属性(外部不能调用,子类也不能调用)
    __id = ""
    
    # 定义公共属性
    country = ""

    # 通过 __init__ 定义构造函数
    # 第一个参数必须是 self(调用时不需传此参数,此参数的名称可以任意指定)
    def __init__(self, name, age):
        # 定义公共属性,并赋值
        self.name = name
        # 定义公共属性,并赋值
        self.age = age
        
        self.__id = "0001"

    # 定义公共函数
    # 第一个参数必须是 self
    def toString(self):
        return self.__getString()

    # 双下划线开头用于定义私有函数(外部不能调用,子类也不能调用)
    # 第一个参数必须是 self(调用时不需传此参数,此参数的名称可以任意指定)
    def __getString(self):
        return f"id:{self.__id}, name:{self.name}, age:{self.age}, country:{self.country}"

    # 定义 [] 方式的操作逻辑
    __dict = {}
    def __setitem__(self, name, value): 
        self.__dict[name] = "myvalue_" + value 
    def __getitem__(self, name): 
        if self.__dict.__contains__(name):
            return self.__dict[name]
        return None
    def __delitem__(self, name): 
        del self.__dict[name] 

    # 定义静态方法
    @staticmethod
    def static_method(name):
        return "hello: " + name

class/class2.py

class Class2:

    def __init__(self, level):
        self.level = level

class/class3.py

# 从 class1.py 文件中导入 Class1 类
from class1 import Class1
# 从 class2.py 文件中导入 Class2 类
from class2 import Class2

# 类的继承,支持多继承
class Class3(Class1, Class2):

    def __init__(self, name, age, level):
        # 调用基类的构造函数
        Class1.__init__(self, name, age)
        Class2.__init__(self, level)

    # 重写基类的函数
    def toString(self):
        return f"name:{self.name}, age:{self.age}, level:{self.level}"


'''
注:
如果多个基类有相同的函数的话,那么你调用的时候调用的是哪个呢?
调用的是前面的那个类的函数
比如 class MyClass(a, b, c):
a, b, c 中有相同的函数,那么你调用会是 a 中的函数
'''

class/demo.py

# 从 class1.py 文件中导入 Class1 类
from class1 import Class1
# 从 class3.py 文件中导入 Class3 类
from class3 import Class3

# 类的使用
a = Class1("webabcd", 30)
a.country = "china"
a.age = 40
print(a.toString()) # id:0001, name:webabcd, age:40, country:china
# 演示如何使用 [] 方式的操作(相关逻辑请看 Class1 类的代码)
a["a"] = "abc"
print(a["a"]) # myvalue_abc
# 演示如何实现类似静态属性的效果
Class1.country = "PRC"
print(Class1.country)
# 演示静态方法的用法
print(Class1.static_method("webabcd"))

# 类的使用
b = Class3("webabcd", 40, 100)
b.country = "china"
print(b.toString()) # name:webabcd, age:40, level:100
# 调用基类的函数
print(super(Class3, b).toString()) # id:0001, name:webabcd, age:40, country:china

class/exception.py

# 定义自定义异常类(需要继承 Exception)
class MyError(Exception):
    def __init__(self, value):
        self.value = value
    def __str__(self):
        return repr(self.value)

try:
    # 抛出自定义异常
    raise MyError("异常信息")
except MyError as ex:
    print(ex)

速战速决 Python https://github.com/webabcd/PythonSample
作者 webabcd

posted @ 2022-01-20 16:12  webabcd  阅读(31)  评论(0编辑  收藏  举报