面向对象

1.__str__,__repr__ 自动打印__init__变量为字符串

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

    def __str__(self):
        return ('%s,%s,%s'%(self.name,self.age,self.sex))

liming = Person('liming', '31', 'nan')
print(liming)
print(liming.age)

2.类的实例化只是执行了__init__方法

3.装饰器一共三个,分别是:staticmethod , classmethod , property

class Kls(object):
    no_inst = 0
    def __init__(self):
        Kls.no_inst = Kls.no_inst + 1
    @classmethod
    def get_no_of_instance(cls_obj1):
        return cls_obj1.no_inst
ik1 = Kls()
ik2 = Kls()
ik3 = Kls()
print(ik1.get_no_of_instance())
print(Kls.get_no_of_instance())

4.  classmethod 把一个方法从对象方法变成类方法;

  • 有时候我们要修改的是类中的静态变量/类变量
  • 这时候我们不会和self有任何的操作关联,传一个self没用
  • 类方法使用类名调用,而不是使用对象名调用***对象也可以调用
  • 不用实例化
class Fruits:
    __discount = 0.8

    def __init__(self,name,price):
        self.name = name
        self.price = price

    @classmethod
    def change_price(cls, value):
        cls.__discount = value
        print(cls.__discount)
        pass

a = Fruits('alex', 300)
Fruits.change_price(1)

 

5.staticmathod 即不操作和self方法相关的,也不操作和类方法相关的,这时候类方法是空白的,使用staticmethod标识一下

classmethod:

 

 

6.归一化设计

class Wechatpay:
    def __init__(self,name,money):
        self.name = name
        self.money = money

    def pay(self):
        print('%s通过微信支付了%s'%(self.name,self.money))

class Alipay:
    def __init(self,name,money):
        self.name = name
        self.money = money
    def pay(self):
        print('%s通过支付宝支付了%s元'%(self.name, self.money))

def pay(person):
    person.pay()


person = Wechatpay('alex', '2000000')
person.pay()

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值