新手学习Python第九天-新手笔记 速学中

现在是北京时间06:55,早上06:44到达实验室,开始学习。对,昨天陪室友考教师资格证了,溜溜达达一天很舒服,两周一次的放松感。这几天和未来几天的压力真的很大,有很多要去学习的,比如Carsim、simulink、ROS2、Python、算法的文章,要尽快啃完,加油!

一、继承

先复习一下前天的学习内容。

class Car:               定义一个Car的类
    def __init__(self,brand):    参数为brand
        self.brand=brand         固定操作赋值
    def start(self):            定义类方法
        print('汽车已启动')      显示

car=Car('梅赛德斯')       将Car类赋给car,可以任意调用
car.start()               调用类方法
print(car.brand)           调用参数brand

class Person(object):        #定义一个类引用父类object 不写里面的也可以
    def __init__(self,name,age):       定义参数
        self.name=name               
        self.age=age                  基础操作赋值
    def info(self):                   类方法
        print(self.name,self.age)      打印输出 
class Student(Person):            定义子类引用上面的父类 
    def __init__(self,name,age,stu_no):    定义里面的参数 
        super().__init__(name,age)        引用父类中的name与age 
        self.stu_no=stu_no                 基础操作赋值 
class Teacher(Person):                与上面相同操作 定义子类 
    def __init__(self,name,age,techofyear):       设置相应参数 
        super().__init__(name,age)           引用父类进行初始化
        self.techofyear=techofyear          基础操作赋值


stu=Student('张三',20,2023204027)         给student设置参数 
tea=Teacher('李四',40,10)                 给Teacher设置参数
stu.info()                               student的引用父类
tea.info()                               teacger的引用父类

这是属于单继承关系,还有多继承关系。

1.2多继承关系

class A(object):
    pass
class B(object):   A与B同时继承object
    pass
class C(A,B):     此处C先继承A,再继承B
    pass

1.3方法重写

子类重写后的方法中可以通过 super().xxx()调用父类中被重写的方法

xxx为父类中类方法的名字

但这样只有学号,我还想要其他信息没有怎么办?利用上述的办法重写结构

super().info()就可以调用父类中的类方法啦

class Person(object):
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def info(self):
        print(self.name,self.age)

class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
    def info(self):
        super().info()
        print(self.stu_no)
class Teacher(Person):
    def __init__(self,name,age,techofyear):
        super().__init__(name,age)
        self.techofyear=techofyear
    def info(self):
        super().info()
        print(self.techofyear)


stu=Student('张三',20,2023204027)
tea=Teacher('李四',40,10)
stu.info()
tea.info()

1.4 object类

1.4.1 是所有类里的父类

1.4.2 内置函数dir()可以查看指定对象所有属性

1.4.3 object有一个_str_()方法 

class Student:
    pass

stu=Student()
print(dir(stu))

举一个例子:

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('张三',20)
print(dir(stu)) 
print(stu)    默认调用__str__()这样的方法 用于返回对象的描述

2.多态

class Animal:
    def eat(self):
        print('动物会吃啥腻') 
class Cat(Animal):
    def eat(self):
        print('猫咪吃鱼')
class Dog(Animal):
    def eat(self):
        print('狗吃骨头')

def fun(obj):    
    obj.eat()   这是一门动态语言学——python,不管你是什么类型,只要你存在这个行为,我就可以把你归为一类,去叫你。

3.特殊属性:

3.1 dir()

首先之前学的dir()可以查看该函数的特殊属性和方法

——————18:59——————

              下午打了羽毛球,打得很舒服,这次没有感觉累,学会了用羽毛球拍捡球,真的好玩,有好几次球速度那么快我都能接到,真的运动可以锻炼反应能力,刚洗完澡来到实验室,今天的月亮好圆,祝大家中秋节小长假快乐呀——

3.2  __dict__ 可以查看对象的属性和方法

在 Python 中,__dict__ 属性用于获取对象的字典,这个字典包含了对象的所有属性和方法。对于一个类的实例__dict__ 包含了实例的所有属性

class A:
    pass
class B:
    pass
class C:
    def __init__(self,name):
        self.name=name

x=C('Jack')
print(x.__dict__)

x是C的实例对象, 其中只有一个参数name,用__dict__查看到属性为name,对应的值为Jack

这样可能看不明白,那么我再写一个就清楚了。

class A:
    pass
class B:
    pass
class C:
    def __init__(self,name,age):
        self.name=name
        self.age=age

x=C('Jack',20)
print(x.__dict__)

这里的属性为键(key).

class A:
    pass
class B:
    pass
class C:
    def __init__(self,name,age):
        self.name=name
        self.age=age

x=C('Jack',20)   #x是C类型的一个实例对象
print(x.__dict__)   #实例对象的属性字典
print(x.__dict__)   #实例对象的属性字典
print(C.__dict__)
print(x.__class__)  #输出了对象所属的类
print(C.__bases__)  #C类的所有父亲类型的元素
print(C.__base__)   #输出C类最近的父类 (即基类)
print(C.__mro__)    #该类C类的层次结构
print(A.__subclasses__())  #该类A下的子类有哪些 (子类的列表)

还是刚才的显示该类下,子类的程序演示

总结创建子类,class 类别 (父类):

特殊属性:__dict__ :获得类对象或实例对象

                                 ——21:49回寝室——

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值