python 类self作用_Python中类的创建和self的作用

在 Python 的类中,我们把这种特征和行为分别称为 属性(attribute)和 方法(method)。现实生活中的“类”是我们归纳总结出来的,而 Python 中的类需要我们自行创建。接下来我们看看如何创建一个类。

编程练习

我们来试一试模仿刚才“人类”的写法,在 Python 中写一个“鸟类”。

要求:

创建一个类,类名为 Bird;

给“鸟类”创建一个属性,名为 wings(翅膀)并赋值为 2;

给“鸟类”创建一个方法,名为 fly(飞),该方法的功能是打印 我会飞。

class Bird:

wings=2

def fly(self):

print('我会飞')

进一步要求:

实例化 Bird 类;

访问属性 wings 并打印出 我有 2 只翅膀;

调用方法 fly()。

bird=Bird()

print('我有{}只翅膀'.format(bird.wings))

bird.fly()

self 的作用

在 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 在定义方法的时候必须有,调用方法的时候要忽略。

再举一个例子,要求:

添加一个名为 intro 的方法;

intro() 方法里先访问 wings 属性打印出 我有 2 只翅膀,再调用 fly() 方法打印出 我会飞。

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值