最初学习的编程语言是C,后来接触了C++,但是C++的特色就是类,当时学得朦朦胧胧,再后来接触python,学习python类的时候感觉似曾相识,与C++异曲同工,今天就好好整理一下。
1. 术语预览
- 类的属性(Class Atrribute)
- 实例(instance)
- 访问类属性(attribute references)
- 方法(Method)/实例方法(Instance Method)
self
参数(就是被创建的实例本身)- “魔法方法”(是方法,不过会魔法,莫名的产生,如
__inti__()
等。
2. 例子与分析
python3.8
class CocaCola:
"""
一个可口可乐类,初始化时被贴上中文标签
可口可乐可以被买
被喝
"""
formula = ['caffeine', 'sugar', 'water', 'soda'] # formula称为类的属性(Class Atrribute)
def __init__(self, logo_name): # __init__(self)称为魔法方法
self.local_logo = logo_name # self.local_logo称为类的属性(Class Atrribute)
def buy(self, money): # def buy(self, money)称为方法(Method)或实例方法(Instance Method),供实例使用
print('Cost {} yuan.'.format(money))
# print('Cost ' + str(money) + ' yuan') # 同样效果
def drink(self,how_much): # def drink(self,how_much)称为方法
if how_much == 'a sip':
print(self.local_logo + ' Cool~')
elif how_much == 'whole bottle':
print(self.local_logo + ' Headache!')
ice_coke = CocaCola('可口可乐') # 创建一个冰可乐的实例
print(ice_coke.formula) # ['caffeine', 'sugar', 'water', 'soda'] # 访问属性
ice_coke.buy(3.5) # Cost 3.5 yuan.
ice_coke.drink('a sip') # 可口可乐Cool~
ice_coke2 = CocaCola('CocaCola') # 可口可乐 Cool~
ice_coke2.drink('whole bottle') # CocaCola Headache!
这里举了一个可口可乐的例子,我们对于可口可乐的常识,可口可乐有相应的配方,同时可口可乐可以被买被喝。
- 什么是属性,魔方方法和实例方法
我理解的属性是一种形容词,可以描述类的特征,比如你向别人介绍你时,你可以说你的身高体重,身高体重就是人这一类的属性。
在此例中formula
和self.local_logo
都为属性,只是self.local_logo
多了一个self
,以self
为前缀的变量都可供类中的所有方法使用。
魔法方法为事先定义好的方法,在创建删除类时能够被自动调用的方法,最大的特征就是开头和末尾各有两个下划线,如def __init__(self, logo_name):
实例方法为类的一些动作。 - 怎样创建实例、访问属性和调用方法
创建实例:ice_coke = CocaCola('可口可乐')
,需要注意的是其传入的参数要根据__init__(self, logo_name)
方法的形式而定。
访问属性:ice_coke.formula
句点表示法在Python中很常用,这种语法演示了Python如何获悉属性的值。
实例方法:ice_coke.buy(3.5)
和ice_coke.drink('a sip')
- 创建多个实例
ice_coke2 = CocaCola('CocaCola')
参考资料
《编程小白的第一本python入门书》
《Python编程 从入门到实践》Eric Matthes