python类和对象

python类和对象
一:1、面向对象程序设计(Object Oriented Programming,OPP)的思想主要针对大型软件设计而提出,使得软件设计更加灵活,能够更好的支持代码复用和设计复用,并且使得代码具有更好的可读性和可扩展性。
2、对象 = 属性 + 方法
3、类是创建对象的模板,是对对象的抽象和概括,而使用类创建的对象是这个类的一个实例。
二:1、定义一个Person类:
class Person:
num = 1 #类属性
def sayhello(self):#方法
print(“Hello”)
对象的创建:
对象名 = 类名()
例如,定义一个Person的对象p:
p = Person()
p.sayhello()
运行结果:
Hello
2、init()方法:
作用:使用__init__()方法后在调用这个类时,从外界传入的东西写在类名后面的括号中即可。
三:我的错误
1、在这里插入图片描述
定义一个类之后,在创建一个对象时输入的参数个数必须与定义类时定义的参数个数一致,上图中类中定义了两个参数a 和 b,而创建cc对象时只输入了一个参数,所以出现错误。
2、在这里插入图片描述
在这里插入图片描述

不能在一个类中同时定义两个参数个数不同的属性。
3、
在这里插入图片描述
封装:

# 封装
class Student:
    def __init__(self, name, gender,u):
        self.name = name
        self.__u = u
        self.gender = gender if gender == "女" or gender == "男"  else "男"
        self.__age = 18

    @property
    def age(self):
        return self.__age
    #设置赋值操作
    @age.setter
    #如果age输入不在0~18之间,则变为18岁。
    def age(self, value):
        if value < 0 or value > 130:
            # self.__age = 18
            print("年龄输入不合格")
        else:
            self.__age = value

    def show(self):
        print(f"我叫{self.name},性别{self.gender},今年{self.__age}岁。")

# 封装
stu1 = Student("花花","女",9)
stu1.age = 1099
print(stu1.age)
stu1.show()

输出:(年龄1099岁,不正确,会改为18)
在这里插入图片描述

继承:

#继承
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
        
    def show(self):
        print(f"大家好,我叫{self.name},今年{self.age}岁",end=",")

class Teather(Person):
    def __init__(self,name, age,kemu):
        #调用父类中的初始化方法(这是方法1)
        super().__init__(name, age)
        self.kemu = kemu

    # 父类方法重写
    def show(self):
        super().show()#继承父类的show()方法
        print(f"我来自猪头岛,我教{self.kemu}。")#添加新的内容

class Docter(Person):
    def __init__(self, name,age, keshi):
        # 调用父类中的初始化方法(这是方法2)
        Person.__init__(self, name, age)
        self.keshi = keshi

    #父类方法重写
    def show(self):
        print(f"大家好我叫{self.name},今年{self.age}岁,我是{self.keshi}医生。")

多重继承:

#多重继承
class Fathera:
    def __init__(self,name):
        self.name = name
    def showa(self):
        print(f"这是父类a,我叫{self.name}")

class Fatherb:
    def __init__(self,age):
        self.age = age
    def showb(self):
        print(f"这是父类b,我今年{self.age}岁")

class Son(Fathera, Fatherb):
    def __init__(self,name, age, place):
        # 调用父类中的初始化方法(这时不能再用 super() 方法)
        Fathera.__init__(self, name)
        Fatherb.__init__(self, age)
        self.place = place

    def showson(self):
        super().showa()#继承父类的showa()方法
        super().showb()#继承父类的showb()方法
        print(f"我来自{self.place}。")#添加新的内容

继承时子类会继承父类的全部非私有属性和方法,如果子类中需要新的属性或方法时,需要用与父类相同的名字来覆盖父类中的属性和方法。
3、的正确代码
在这里插入图片描述
子类的属性中需要一个参数而父类中却有两个,所以子类要用与父类相同的__init__()名字覆盖父类中的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值