python中calss(类)的使用,类的教程,类中的函数怎么调用。

举报
泽宇-Li 发表于 2020/10/27 16:32:00 2020/10/27
【摘要】 我们先来看看这个代码class Computer: screen = True def start(self): print('电脑正在开机中……')my_computer = Computer()#实例化类print(my_computer.screen)#打印类中的属性值my_computer.start()#启动类中的方法12345678910想要调用他语法是...

我们先来看看这个代码

class Computer:

    screen = True

    def start(self):
        print('电脑正在开机中……')my_computer = Computer()#实例化类print(my_computer.screen)#打印类中的属性值my_computer.start()#启动类中的方法12345678910

想要调用他语法是实例名.属性实例名.方法

所以说最后我们打印出的内容是

True电脑正在开机中……12

来看看怎么才能使用类中的值:

my_computer.screen
实例名.属性
这样就可以调用类中的属性了

my_computer.start()
实例名.方法
这样就可以启动类中的函数

看到这里很多人也明白怎么使用类了,可是发现类中函数有一个self参数这个参数有什么作用呢?
接下来我们看

class Chinese:

    name = '小张'  # 类属性name

    def say(self, someone):  # 带有两个参数的方法
        print(someone + '是中国人')person = Chinese()print(person.name)person.say('小张') 12345678910

输出的结果是:

小张
小张是中国人12

self调用时要忽略,'小张’传给参数someone

为什么忽略self,因为self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,self 是所有实例的替身,“替身”是什么意思呢?就如上面这个代码一样,传参直接给了someone没有给self,因为他被忽略了,但是他是存在的,因为没有他,函数就不是实例化中的函数,所以大家只要记得在类中函数添加上self就行了。

self总结,self就是实例化类的意思,传参时可以忽略。

我们接着走,细心的同学会发现,我们传的参数小张给someone,然后再打印出 小张是中国人,其实我们没必要这么麻烦,直接看类的属性中有小张的参数值,直接调用就好了
然后你们就会想到

class Chinese:

    name = '小张'  # 类属性name

    def say(self):  # 带有两个参数的方法
        print(name + '是中国人')person = Chinese()print(person.name)person.say() 12345678910

打印出来的结果

Traceback (most recent call last):
  File "one.py", line 10, in <module>
    person.say()
  File "one.py", line 6, in say    print(name + '是中国人')NameError: name 'name' is not defined123456

报错找到不到name,为什么呢?我上面不是写了嘛?因为类里面调用属性需要先加实例化,那是不是写Chinese().name是的,这样写没有错,但是我们没必要这样写呢,我们上面说过self就是类的实例化,所以我们写成self.name 就可以调用属性了,

小总结:类的属性调用前面加self.属性名就可以了。self在类中就是Chinese(),我们完全可以把全部的self写成Chinese(),有的人类的名字很长,写代码时很不有好所以出现了self,带代替的他的存在,传参时也不会传给他。

有同学又问,如果类里面有两个方法(函数)这么办?我下一个方法(函数)要调用上一个方法(函数)这么调用,同理看下面的代码

class Chinese:

    def greeting(self):
        print('很高兴遇见你')

    def say(self):
        self.greeting() 
        print('我来自中国')person = Chinese()# 创建实例personperson.say()# 调用say()方法 12345678910111213

我们只要在前面加上一个self(实例)就可以了。大家可以复制代码到编译器看看。

综上,所以我们说self代表的是类的实例本身,方便数据的流转。对此,我们需要记住两点:

第一点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)。

第二点:当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名self.方法名的格式。

接下来我们说说类中的初始化

定义初始化方法的格式是def init(self),是由init加左右两边的【双】下划线组成( initialize “初始化”的缩写)。

初始化方法的作用在于:实例对象创建时,该方法内的代码无须调用就会自动运行

我们看下面的代码

class Chinese:

    def __init__(self): 
        print('很高兴遇见你,我是初始化方法')person = Chinese()123456

运行出来的结果

很高兴遇见你,我是初始化方法1

少了一个调用的函数 person.__ init __()
为什么呢?因为他时初始化,只要类的实例化创建出来就会自动运行,好比方说,你打开电脑,他会自动加载C盘上的系统文件,直到你打开电脑桌面为止,剩下的才是你操作的内容,前面打开电脑的过程都叫做类的初始化,自动运行了。

这时候有同学问,那我再初始化写一些代码赋值给函数,能调用吗?
在初始化中所有代码都是可以调用的,同理,在前面加一个self看下面的例子

class Chinese:
    def __init__ (self):
        self.mouth = 1  # self.不能丢
        self.eye = 2
    
    def body(self):
        print('我有%s张嘴巴' % self.mouth)
        print('我有%s只眼睛' % self.eye)person = Chinese()person.body()1234567891011

运行出来的结果就是

我有1张嘴巴
我有2只眼睛



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。