[入门]——实例方法、类方法、静态方法

实例方法

第一个蚕食

实例方法我们都知道, 就是绑在类实例上的, 这类方法的特点是第一个参数(self)是实例本身。

第一个参数可以隐式的传入实力本身

class C:
	def __init__(self, name):
		self.name = name
	def getName(self):
		return self.name

类方法

类和实例都可以调用


类方法与实例方法的区别就是第一个参数(cls)的区别。


第一个参数可以隐式的传入这个类(或者这个实例所属的类)。


这类方法要用@classmethod装饰器去装饰。

class C:
	def __init__(self, name):
		self.name = name
	def getName(self):
		return self.name
		
	@classmethod
	def f(cls):
		if cls is C:
			print("通过类调用")
		else:
			print("通过实例调用")

C.f()
C().f()

静态方法

静态方法就类似java 中的静态方法


静态类它既不隐式传入类也不隐式传入实例, 它达到的目的极像java中的静态方法(不能动用实例的实例属性。)。


静态方法的特点就是他被@staticmethod装饰器修饰


class People(object):
    def __init__(self, name, age=None):
        self.__name = name
        self.age = age
        
    def setAge(self, age):
        if(age < 0):
            print("error, age > 0")
        else:
            self.age =age

    @staticmethod
    def validate(age):
        if(age < 0):
            print("年龄不合理")
        else:
            print("合理")

动态增加方法

class Demo:
    pass
t = Demo()

def test(a):
    print(a)
t.test = test #给实例动态增加普通方法

import types
def test2(self):
    print(self)
t.test2 = types.MethodType(test,t) #给实例绑定一个方法(增加一个实例方法)

[15页]


待做一个类的知识图。

    • 成员变量

    • 成员方法

      • 实例方法
      • 类方法
      • 静态方法(它达到的目的极像java中的静态方法)
    • 受保护程度:

      • 私有成员
      • 保护
      • 公有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值