6.实例方法、类方法、静态方法

一、实例方法

1.调用方式1

class Person:
    def eat(self, food):
        print("吃:",  food)
p = Person()
p.eat("土豆")					#	输出:吃: 土豆

2.也可以用类调用

Person.eat("abc", "土豆")	#	输出为:吃:土豆
                                #	需要注意的是:此处必须传入2个参数,第一个为self, 第二个为food.self变成了"abc"

3.eat函数存放在Person类中的__dict __ 中

    也可以用如下方式调用:

func = Person.eat
func( "abc", "土豆")			#	输出为:吃:土豆 
				        #	func 就是Person.eat函数, 必须传入2个参数。

    第2、3种调用方式无多大意义,了解即可。以第1种为标准调用方式。

二、类方法

1.调用方式1

class Person:
    @classmethod
    def classm(cls):
        print("这是一个类方法")

Person.classm(123)				#	输出为:这是一个类方法 123

2.调用方式2

func = Person.classm
func(666)					#	输出为:这是一个类方法 666
						#	func就是 Person.classm函数

 三、静态方法

1.调用方式1

class Person:
    @staticmethod
    def staticm(a):				#	不像前两种方法必有第一个默认参数
        print("这是一个类方法", a)

Person.staticm(123)				#	输出为:这是一个类方法 123

2.调用方式2

func = Person.staticm
func(123)					#	输出为:这是一个类方法 123

四、不同类型的方法访问不同类型的属性规律

实例能访问实例属性和类属性。访问时,实例属性优先于类属性。
类只能访问类属性,而不能向下访问该类产生的实例的实例属性。(实例数量n ≥ 该类1),所以:

    实例方法能访问实例属性和类属性。访问时,实例属性优先于类属性。类方法只能访问类属性,而不能访问该类产生的实例的实例属性。

class Person:
    age = 10
    
    def instancem(self):
        print(self.age)
        print(self.num)

p = Person()
p.num = 66
p.instancem()					#	输出为:10	66

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值