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

静态方法:

  1. 作用:静态方法可以更好的组织代码,防止代码变大后变得比较混乱。

  2. 特性: 静态方法只是名义上归类管理,实际上在静态方法里访问不了类或者实例中的任何属性

类方法:

  1. 作用:无需实例化直接被类调用

  2. 特性: 类方法只能访问类变量,不能访问实例变量

属性方法:

作用:属性方法把一个方法变成一个属性,隐藏了实现细节,调用时不必加括号直接d.eat即可调用self.eat()方法

静态方法:

1. __new__ : 先于__init__方法,每生成一个实例执行一次,创建实例对象 (在内存中给对象分配空间)

2. __init__: 每生成一个实例就会执行一次,初始化实例对象 (给对象的空间中, 保存数据)

3. __call__: 有这个方法,  对象就可以被调用

4. __del__: delete  obj   就会调用这个方法


class A():
class_name = 'A'

def __init__(self, num):
    self.num = num

@staticmethod  # 静态方法
def func1():
    # 方法要操作的数据, 不是这个类里的
    print('func1')
    pass

@classmethod  # 类方法
def func2(cls):
    # 类方法, 这个方法, 要操作的数据是类中保存的
    print(cls.class_name)
    pass

def func3(self):
    # 实例方法, 这个方法, 要操作的数据, 是实例中的数据
    print(self.num)
    pass
A.func1()
A.func2()
a = A(123)
a.func3()

属性方法:

class A():
name = 'aaa'
birthday = '2010-01-01'
@property  # 属性方法
def age(self):
    return 10
a = A()

print(a.name)
print(a.age)  # age函数被当做属性使用

魔法方法:

class Person(object):
def __init__(self, name, age):
    self.name = name
    self.age = age
def __call__(self, *args, **kwargs):
    print('被调用了')

def __add__(self, other):
    return self.age + other.age

def __ge__(self, value):
    return self.age >= value

def __del__(self):

    print('被删除了')

class Dog():
def __init__(self, name, age):
    self.name = name
    self.age = age


p1 = Person('lisi', 18)
p2 = Person('zs', 19)  # 就算你不主动删除,  在脚本执行完成时,  解释器也会把p2 删除

# d1 = Dog('xiaohua', 3)

# print(p1 + d1)
# print(d1 + p1)
# print(p1 >= 20)
# l1 = [1, 2, 3]
# l2 = [4, 5, 6]
# print(l1 + l2)  # __add__()
# p1()

del p1
del p2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值