object类、多态、特殊方法、特殊属性

"""
object类
1、object是所有类的父类,所有类都有object类的属性和方法
2、内置函数dir()可以查看指定对象所有属性
3、object有一个_str_()方法,用于返回一个对于对象的描述
    对应于内置函数str()经常用于print方法,帮我们查看对象的信息,对_str_()进行重写
"""
class Student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):
        return '我的名字是{0},今年{1}岁'.format(self.name,self.age)
stu=Student('张三',23)
print(dir(stu))
print(stu)#我的名字是张三,今年23print(type(stu))
"""
多态
1.具有多种形态,不知道一个变量所引用的对象到底是什么类型
  但是仍然可以通过这个变量调用方法,在运行的过程中根据对象所引用的类型
  动态决定调用对象中的那一个方法
2.不需要关心对象是什么类型,只需要关心对象的行为
静态语言实现多态的三个必要条件:
1.继承
2.方法重写
3.父类引用指向子类对象
"""
class Animal(object):
    def eat(self):
        print('动物会吃')
class Dog(Animal):
    def eat(self):
        print('狗吃骨头')
class Cat(Animal):
    def eat(self):
        print('猫吃鱼')

class Person:
    def eat(self):
        print('人吃五谷杂粮')

#定义一个函数
def fun(obj):
    obj.eat()
fun(Cat())
fun(Dog())
fun(Person())
class A:
    pass
class B:
    pass
class C(A,B):
    def __init__(self,name,age):
        self.name=name
        self.age=age
class D(A):
    pass
#创建C类的对象
x=C('jack',23)a=100
b=200
c=a+b
d=a.__add__(b)
print(c)#300
print(d)#300
class Student:
    def __init__(self,name):
        self.name=name
    def __add__(self, other):
        return self.name+other.name
    def __len__(self):
        return len(self.name)
stu1=Student('张三肝')
stu2=Student('李四')
s=stu1+stu2#实现了两个对象的运算,在Student中使用__add__方法
print(s)
print(len(stu1))
print(x.__dict__)#实例对象的属性字典{'name': 'jack', 'age': 23}
print(x.__class__)#输出对象所属的类<class '__main__.C'>
print(C.__class__)#C类的父类元素
print(C.__mro__)#类的层次结构
print(A.__subclasses__())#子类的列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值