专栏:python
个人主页:HaiFan.
专栏简介:Python基础已经更新完,接下来是Python面向对象的知识点。
方法是什么?
一个类,它有特征,也有动作,特征是属性,动作是方法,我们知道如何去定义一个函数,那么,把函数写在类中,就称为方法。
格式:
def 方法名(self[,参数,参数]):pass
在这里,我们先写一个手机类,然后创建出对象。
class Phone():brand = 'wudi'price = 9999type = 'nb 90'a = Phone()
然后在手机类中写一个call方法
class Phone():brand = 'wudi'price = 9999type = 'nb 90'def call(self):pass
call方法里的self是什么?
从英文上来翻译:self是自己的意思,那么我们把self打印出来会是什么呢?
从代码结果中可以看出,这两个的地址是相同的,可以认为:self就是a。谁调用这个call,谁就会被当作参数。
格式:
class 类名:@classmethoddef 类方法名(cls):方法体
普通方法必须依赖于对象,self就是对象,通过对象才能去调用。
cls是class的缩写,没有对象也可以调用,这个方法的参数是类名,通过类去调用。
class Phone():def __init__(self,name):self.name = namedef show_name(self):print(f'{self.name}')@classmethoddef test(cls):print('----------test')print(cls.name)a = Phone('lisi')
Phone.test()
a.test()
在调用test方法的时候,只把cls打印出来了我想在test方法里打印出对象的name属性,但是报错了。这是因为这个name属性在test方法里是无法访问的。
类方法特点:
@classmethod
对4的解释:
普通方法中调用普通方法只需要 self.方法名
即可,因为他们是同级函数。那么,在类方法中写 self.方法名
,那么这个self是谁?类方法的参数是 cls
,在类方法中使用普通方法的的时候,这个self是不知道是什么的。
类方法的作用:
因为只能访问类属性和类方法,所以可以在对象创建之前,如果需要完成一些动作(功能)
格式:
class Phone:@staticmethoddef 方法名():pass
直接看代码:
class Person:__age = 18def __init__(self):self.name = 'lufei'self.food = 'shaokao'def show(self):print('------>',self.__age)@classmethoddef test(cls):cls.__age = 100print('---------->类方法')print(cls.__age)@staticmethoddef test1():print('-------->静态方法')print(Person.__age)Person.test1()
静态方法:很类似于类方法
@staticmethod
类方法和静态方法的不同之处
相同之处
普通方法
不同之处:
上一篇:Vue组件间通信的方式