super()与多态与绑定

super()调用父类提供给自己的方法=》严格依赖继承关系# 调用super()会得到一个特殊的对象,该对象会参照发起属性查找的那个类的mro,去当前类的父类中找属性

# super()案例
# class A:
#     def test(self):
#         print('from A')
#         super().test()
#
# class B:
#     def test(self):
#         print('from B')
#
# class C(A,B):
#     pass
#
#
# obj=C()
# obj.test()
#
# print(C.mro())

多态:同一事物有多种形态
为何要有多态=》多态会带来什么样的特性:多态性
多态性指的是可以在不考虑对象具体类型的情况下而直接使用对象

# class Animal: # 统一所有子类的方法
#     def say(self):
#         print('动物基本的发声频率。。。',end=' ')
#
# class People(Animal):
#     def say(self):
#         super().say()
#         print('嘤嘤嘤嘤嘤嘤嘤')
#
# class Dog(Animal):
#     def say(self):
#         super().say()
#         print('汪汪汪')
#
# class Pig(Animal):
#     def say(self):
#         super().say()
#         print('哼哼哼')
#
#
# obj1=People()
# obj2=Dog()
# obj3=Pig()

#
# obj1.say()
# obj2.say()
# obj3.say()
# 一:绑定方法:特殊之处在于将调用者本身当做第一个参数自动传入
#    1、绑定给对象的方法:调用者是对象,自动传入的是对象
#    2、绑定给类的方法:调用者类,自动传入的是类
# import settings
#
# class Mysql:
#     def __init__(self,ip,port):
#         self.ip=ip
#         self.port=port
#
#     def func(self):
#         print('%s:%s' %(self.ip,self.port))
#
#     @classmethod # 将下面的函数装饰成绑定给类的方法
#     def from_conf(cls):
#         print(cls)
#         return cls(settings.IP, settings.PORT)
#
# # obj1=Mysql('1.1.1.1',3306)
#
# obj2=Mysql.from_conf()
# print(obj2.__dict__)

# 二:非绑定方法-》静态方法:
#    没有绑定给任何人:调用者可以是类、对象,没有自动传参的效果

class Mysql:
    def __init__(self,ip,port):
        self.nid=self.create_id()
        self.ip=ip
        self.port=port

    @staticmethod # 将下述函数装饰成一个静态方法
    def create_id():
        import uuid
        return uuid.uuid4()

    @classmethod
    def f1(cls):
        pass

    def f2(self):
        pass
obj1=Mysql('1.1.1.1',3306)

# print(Mysql.create_id)
# print(obj1.create_id)

# Mysql.create_id(1,2,3)
# obj1.create_id(4,5,6)

print(Mysql.create_id)
print(Mysql.f1)
print(obj1.f2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值