速戰速決 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]
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
# 類的使用
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