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

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

静态方法:

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

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

类方法:

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

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

属性方法:

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

魔法方法:

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

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

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

__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、付费专栏及课程。

余额充值