Python基础语法之继承、多态、属性与方法

1.继承简介

			。继承是面向对象的三大特性之一
			。通过继承我们可以使一个类获取到其他类中属性和方法
			。在定义类时,可以在类名后面的括号中指定当前类的父类(超类、基类)
			。继承提高了类的复用性,让类与类之间产生了关系,有了这个关系,才有了多态的特性。
			隐患:创建一个新类比较麻烦,需要大量的复制粘贴代码。维护修改起来比较麻烦,因此引入了继承
			class Person():
				name = ''
				age = ''
			calss Doctor(Person):
				pass
			在创建类时,如果省略了父类,则默认父类为object
			object是所有类的父类,所有类都继承自object
			所有对象都是object的实例
			class Presson(object):
				pass
			issubclass() 检查一个类是否是另一个类的子类
			print(issubclass(Person,object))   # True
			print(issubclass(int,object))  # True

2.方法重写

		如果子类中有和父类同名的方法,则通过子类的实例去调用方法时,会调用子类的方法而不是父类的方法,这个特点我们也称之为方法的重写(覆盖)
		当我们用对象去调用一个方法时,
		首先会优先当前对象中寻找是否具有该方法,如果有则直接调用,如果没有,则去当前对象的父类中寻找,如果父类中有则调用父类中的方法,如果父类中没有则去父类的父类寻找,以此类推,如果没有则返回错误
		class A(object):
			def test(self):
				print('a....')
		class B(A):
			def test('B....')
	c = B()
	print(c.test) # B.....

3.super()

		父类中的所有方法都会被子类继承,包括特殊方法
		有一种动态的方法来获取类的父类
		通过super()可以直接获取当前类的父类

4.多重继承

		__bases__可以获取当前类所有的父类
		用法:类名.__bases__
		在Python中是支持多重继承的,也就是我们可以为一个类指定多个父类
		如果多个父类中有同名的方法,则会在第一个父类中寻找,然后找第二个父类。。。。。。前边会覆盖后面的

5.多态

		多态是面向对象的三大特性之一
		一个对象可以以不同形态去呈现
	
	class A:
		def __init__(self,name):
		self._name = name
	class B:
		def __init__(self,name):
			self._name = naem
	@property
	def name(self):
		return self._name
	@name.setter
	def name(self,name):
		self._name = name 
	class C:
		pass
	
	a = A('葫芦娃')
	b = B('钢铁侠')
	c = C()
	#对应speak()这个函数来说,只要对象中函数有name属性,它就可以作为参数传递
	#这个函数并不考虑对象的类型,只要有name属性就可以
	def speak(obj):
		print('你好 s%'%.obj.name)
	speak(a)	#你好 葫芦娃
	speak(b)	#你好 钢铁侠
	speak(c)	# AttributeError: 'C' object has no attribute 'name'

#在speak2()中做了一个类型检查,也就是说只要符合obj是A类型的对象时,才可以执行,其他类型的对象使用不了该函数,这个函数就违反了多态
def speak2(obj):
	#检查obj是否是A的实例
	if isinstance(obj,A):
		print('你好 %s'%obj.name)
	
	面向对象的三大特征:
	封装:封装是确保对象中的数据安全
	继承:保证的对象的可扩展性
	多态:保证是程序的灵活性

属性和方法

		属性
			类属性,直接在类中定义的属性是类属性
			类属性可以通过类或者类的实例进行访问,但是类属性只能通过类对象修改,无法通过实例对象修改
			实例属性 通过实例对象添加的属性输液实例属性
			实例属性只能通过实例对象来访问和修改,类对象无法访问修改
			class A(object):
				count = 0
				def __init__(self):
					self.name = '葫芦娃'
			a = A()
			#类属性可以通过类或者类的实例进行访问
			print a.count	#0
			print A.count  	#0
			
			a.count = 10
			print('A',A.count)		#0
			print('a',a.count)		#10
			#类属性只能通过类对象修改,无法通过实例对象修改
			A.count = 100
			print('A',A.count)		#100
			print('a',a.count)		#100
			
				print('a',a.name) 		#葫芦娃
				
				print('A',A.name)		#AtrributeError :type object 'A' has not attribute 'name'
			
		方法
			在类中定义,以self为第一个参数的方法都是实例方法
			实施方法在调用时,Python会将调用对象以self传入
			实例方法可以通过类实例和类去调用
			当通过实例调用时,会自动将当前调用对象作为self传入
			当通过类调用时,不会自动传递self,我们必须手动传递self
			类方法在类的内容以@classmethon来修饰的方法属性类方法
			类方法第一个参数是cls也会自动被传递,cls就是当做类对象
			类方法和实例方法的区别,实例方法的第一个参数self
			@staticmethod 修饰的方法是静态方法
			静态方法不需要指定任何默认参数,静态方法可以通过类或者实例调用
			静态方法基本上是一个和当前类无关的方法,他只是一个保存到当前类的函数
			静态方法一般都是一些工具方法,和当前类无关
			class A(object):
				def test(self):
					print('这是test方法。。。。。')
				@classmethod
				def test2(cls):
					print(' 这是test2方法。。。。。')
				@staticmethod
				def test3():
					print('test3方法是静态方法')
			a = A()
			#当通过实例调用时,会自动将当前调用对象作为self传入
			a.test()		#这是test方法。。。。。
			#当通过类调用时,不会自动传递self,我们必须手动传递self
			A.test()		#TypeError : test() missing 1 required postitiaonal argument::'self'
			#,我们必须手动传递self 需要手工传递参数
			A.test(a)		#这是test方法。。。。。
			a.test() 等价于 A.test(a)
			#类方法和实例方法的区别,实例方法的第一个参数self
			A.test2()		#这是test2方法。。。。。
			A.test2() 等价于 a.test2()
			A.test3()		#test3方法是静态方法
			a.test3()		#test3方法是静态方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值