Python 基础(四) 类、继承、多继承、重写、私有属性等

一. Python 类

class 关键字定义,内部可以定义属性和方法。  这是面型对象的基础

对象是类的具体实现。 就像猫与动物的关系一样,猫是动物的一种,猫具有动物的各种特征。

使用 对象 = 类  的方式来创建对象  cat = Animal();

类里的方法写在类的内部,类的属性既可以在类内部定义,也可通过对象去定义。

下面的例子是使用对象去定义类的属性

class Washer():
    def wash(self):
        print('我会洗衣服')
        print(self)

hair = Washer()
print(hair)  # <__main__.Washer object at 0x00000147B01194A8>   对象的内存地址

hair.height = 100
hair.describe = "海尔洗衣机"
print(f'海尔洗衣机的型号{hair.height}') #  海尔洗衣机的型号100

类内部使用类的属性:

在外部定义属性,但是在类内部方法使用属性

# 类内部获取属性
class Washer2():
    def wash(self):
        print(f"洗衣机宽度{self.width}")

hair_2 = Washer2()
hair_2.width = 100
hair_2.wash()  # 洗衣机宽度100

在类的内部定义类的属性,需要使用类的构造函数  __init(self)  self 就是类自己,相当于c语言的指针,一个指向自己的指针

个人觉得这种定义方式更适合去理解,毕竟属于先定义后使用。

# 构造函数
class Washer3():
    def __init__(self,width,height):
        self.width =width
        self.height = height

    def wash(self):
        print(f"洗衣机3的宽度{self.width} 洗衣机3的高度{self.height}")

    #  类似java重写string 方法
    def __str__(self):
         return '这是海尔洗⾐机的说明书'

    
hair_3 = Washer3(1,2)
hair_3.wash()
print(hair_3)

二. 继承

继承分为单继承和多继承

先介绍单继承:

单继承很容易理解,具体代码如下,子类继承父类后,不需要定义就具备父类的属性和方法

class DuanYu():
    def __init__(self):
        self.kongfu = '北冥神功'

    def hit(self):
        print(f"运用{self.kongfu} k.o 了某人")

class Prentice(DuanYu):
    pass

prentice = Prentice()
prentice.hit()  # 运用北冥神功 k.o 了某人
print(prentice.kongfu)  # 北冥神功

多继承:当一个类具有多个父类的时候,默认使用第一个父类属性和方法

使用语法 class 子类(父类1,父类2,父类3)

代码:

# 多继承  当⼀个类有多个⽗类的时候,默认使⽤第⼀个⽗类的同名属性和⽅法
class DuanYu():
    def __init__(self):
        self.kongfu = '北冥神功'

    def hit(self):
        print(f"运用{self.kongfu} k.o 了某人")
class QiaoFeng():
    def __init__(self):
        self.kongfu = '打狗棍法'

    def hit(self):
        print(f"运用{self.kongfu} k.o 了某人")

class Prentice(DuanYu, QiaoFeng):
    pass

prentice = Prentice()
prentice.hit()  # 运用北冥神功 k.o 了某人
print(prentice.kongfu)  # 北冥神功
继承与重写:通过重写子类与父类重名的方法和属性后,子类会默认调用自己重写后的方法和属性

通俗的讲,继承之后,子类没有的用父类的,子类有的用子类自己的,这点同java一样,但是java只有单继承

class DuanYu():
    def __init__(self):
        self.kongfu = '北冥神功'

    def hit(self):
        print(f"运用{self.kongfu} k.o 了某人")


class QiaoFeng():
    def __init__(self):
        self.kongfu = '打狗棍法'

    def hit(self):
        print(f"运用{self.kongfu} k.o 了某人")


# 重写 ⼦类和⽗类具有同名属性和⽅法,默认使⽤⼦类的同名属性和⽅法。
class Prentice(DuanYu, QiaoFeng):
	def __init__(self):
		self.kongfu = '打猫棍法'

prentice = Prentice()
prentice.hit()  # 运用打猫棍法 k.o 了某人

子类重写后调用父类的方法:

需要在子类的方法中先调用父类的构造函数,否则,子类重名属性会覆盖父类的下·

# 子类调用父类的方法
class Prentice2(DuanYu, QiaoFeng):
	def __init__(self):
		self.kongfu = '打蛇棍法'

	def hit(self):
		self.__init__()
		print(f"运用{self.kongfu} k.o 了某人")

	def hit_qiao(self):
		QiaoFeng.__init__(self)
		QiaoFeng.hit(self)

	def hit_duan(self):
		DuanYu.__init__(self)
		DuanYu.hit(self)



tudi = Prentice2()
tudi.hit()
tudi.hit_duan()
tudi.hit_qiao()

三. 私有属性

在Pthon中可以为某个类设置私有属性和私有方法,子类继承后,不可以使用父类的私有属性和方法

语法  __私有属性    __私有方法()

子类访问父类的私有属性会报错

class QiaoFeng():
	def __init__(self):
		self.kongfu = '降龙十八掌'
		self.__girl = '阿朱'

class TuDi(QiaoFeng):
	pass

tudi = TuDi()
print(tudi.kongfu)
# print(tudi.__girl)  #AttributeError: 'TuDi' object has no attribute '__girl'

 Python中,⼀般定义函数名 get_xx ⽤来获取私有属性,定义 set_xx ⽤来修改私有属性值。

# 获取和修改私有属性值
class DuanYu():
	def __init__(self):
		self.kongfu = '六脉神剑'
		self.__girl = '王语嫣'

		# 获取私有属性
	def get_girl(self):
		return self.__girl

		# 修改私有属性
	def set_girl(self):
		self.__girl = '木婉清'


class TuDi2(DuanYu):
	pass

tudi2 = TuDi2()
print(tudi2.kongfu)
print(tudi2.get_girl()) # 王语嫣
tudi2.set_girl()
print(tudi2.get_girl()) # 木婉清

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
当我们需要在派生中新增私有属性重写方法时,可以使用以下步骤: 1. 定义一个派生,并在定义的开头使用基名称和圆括号,以便将基与派生联系起来。 2. 在派生定义一个新的私有属性。 3. 在派生重写方法,可以使用 super() 函数调用基方法,并在其基础上添加新的功能。 下面是一个示例代码,演示了如何在 Python 中实现派生私有属性重写方法: ```python class BaseClass: def __init__(self, name): self.name = name def display(self): print("BaseClass Name:", self.name) class DerivedClass(BaseClass): def __init__(self, name, age): super().__init__(name) self.__age = age # 新增私有属性 def display(self): super().display() # 调用基方法 print("DerivedClass Age:", self.__age) # 添加新功能 d = DerivedClass("Tom", 20) d.display() ``` 在这个例子中,我们创建了一个基 BaseClass,其中包含一个属性和一个方法。然后我们创建了一个派生 DerivedClass,它继承了 BaseClass,并添加了一个新的私有属性。最后,我们重写了基方法,并在其中添加了新的功能。 需要注意的是,在派生中新增私有属性时,需要在属性的名称前加上两个下划线,这样属性就变成了私有属性,只能在内部访问。另外,当我们重写方法时,可以使用 super() 函数调用基方法,并在其基础上添加新的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值