速战速决 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