我们以人类来举例,人类都有哪些共同点呢?两条胳膊、两条腿、直立行走、有着各种颜色的头发、说着各式各样的语言等。这些共同点分为两类:
在 Python 的类中,我们把这种特征和行为分别称为 属性(attribute)和 方法(method)。现实生活中的“类”是我们归纳总结出来的,而 Python 中的类需要我们自行创建。接下来我们看看如何创建一个类。
我们来试一试模仿刚才“人类”的写法,在 Python 中写一个“鸟类”。
要求:
class Bird:
wings=2
def fly(self):
print(‘我会飞‘)
进一步要求:
bird=Bird()
print(‘我有{}只翅膀‘.format(bird.wings))
bird.fly()
在 Python 的类中,self 表示创建的实例本身。
在类的方法里直接访问类的属性是不行的,那要怎么办呢?我们说过,访问类的属性要先实例化,然后通过 实例名.属性 进行访问。
但在类的方法内访问类的属性时,类的实例还没被创建。这时,self 就出现了,它的作用是代替实例本身,所以上面的例子正确的写法应该是这样:。
class Human: arms = 2 legs = 2 hair = ‘各种颜色的头发‘ def walk(self): print(‘直立行走‘) def speak(self): print(‘说着各式各样的语言‘) def intro(self): # 类的方法里访问类的变量 print(‘人类有%d条胳膊%d条腿‘ % (self.arms, self.legs)) #此处错误的写法是:
#print(‘人类有%d条胳膊%d条腿‘ % (arms, legs))
# 类的实例化 human = Human() human.intro() # 输出:人类有2条胳膊2条腿
当执行 human.intro() 这行代码时,Python 会将 human 作为第一个参数偷偷传递给 self,这样我们就不再需要传入第一个参数,并能通过 self 访问类的属性和方法了。
self 在定义方法的时候必须有,调用方法的时候要忽略。
再举一个例子,要求:
class Bird:
wings = 2
def fly(self):
print(‘我会飞‘)
def intro(self):
print(‘我有{}只翅膀‘.format(self.wings))
self.fly()
bird=Bird()
bird.intro()
再举一个例子:
class Saiyan:
born_place=‘贝吉塔行星‘
character=‘天生好战性格暴躁‘
def transform(self):
print(‘变身巨猿‘)
print(‘赛亚人出生于{},{}。‘.format(self.born_place,self.character))
saiyan=Saiyan()
saiyan.transform()
原文:https://www.cnblogs.com/mingzhuqi/p/13264501.html