Python知识点总结(4) 面向对象

0 类

class Player(object):
	def __init__(self,name,age):
		self.name=name
		self.age=age
	def message(self ):
		print('nmae:%s ,age:%d '(self.name ,self.age))
lbl=Player('lbl',30)
lbl.message()

1封装

class Player(object):
 	name=' '
 	age=0
	def message(self ):
		print('nmae:%s ,age:%d '(self.name ,self.age))
lbl=Player(')
lbl.name='lbl'
messi.age=30
messi.mssage()

此时的name和age是共有变量,可以把属性改为私有变量;
前面加__ 双下划线变为私有;可以使用 set+类名进行访问;

class Player(object):
 	__name=' '
 	__age=0
	def message(self ):
		print('nmae:%s ,age:%d '(self.name ,self.age))
lbl=Player(')
lbl.name='lbl'
messi.age=30
messi.mssage()
lbl.setPlayer('lbl',30)

2 继承

继承:

class  CF(Player):
	goal =0
	def print(self):
		print('name:%s, age:%d , goal :%d  ' % (self.name ,self.age,self.goal)) 
devlant=CF(  )
devlant.name='devlant'
devlan.age=30
devlan.goal=91

多重继承

class A(object):
	def __init_(self): #构造函数 ,对象的创建
		print('init class A')
	class B(A):
	def __init__(self):
		A.__init__(self):
		print('init class B')
	
	class C(A):
		def __init__(self):
			A.__init__(self)
			print('C')

class D(B,C):
	def __Init__(self):
		B.__init(self)
		C.__init(self)
		print('init class D')
	d=D()
	B,C单继承,D多继承
	TCP和UDP的多进程和多线程
class MyTCPSsever(TCPSever, ForkingM):
class MyUDPSever(UDPSever,ThreadingMixin):

super()
实现了多重继承的功能;但是A被多次初始化;很不合理;所有super可以解决

class A(object):
	def __init__(self):
		print('int class A')
	
class B(A):
	def __initII(self):
		super(B,self).__init__()
		print('init class B')

class C(B):
	def __init__(self):
		super(D,self).__init__()
		print('init class D')
	d= D

3 多态

类具有继承关系,子类类型转化为父类类型,可以从person转出为Student和Teachaer

class Person(object):
	def __init__(self, name):
		self.name =name
	def whoI(sefl):
		return 'I am person ,my name is % s'% self.name
class Student (Person)def  __init__(Person):
		super(Shudent.slef).__init__(name)
		self.socer=scoer
	def whoAmI(Self)return 'I am a Student ,my name is %s ,my score is %d '% (self.name,self.score)
		def who_am_i(x)
			print(x.whoAmI())
		p=Person('caomei')
		s=Student('liuliu')
		who_am_i(p)
		who_am_i(s)

面向对象所谓的多态方法;就是调用x;s是student类型,whoAmI()方法从继承的whoAmi方法,调用到s.whoAmI()的定义;没有定义,继续向父类中找;

Python是动态语言;动态语言和静态语言的差距是;
动态语言,传给who_am_i的参数不一定是person的子类型;任何数据类型的实例都可以,只要有一个whoAmi方法;
这是动态语言和静态语言java最大差距;
动态调用实例方法不检查类型,参数正确就可以;

4运算符重载

python提供很多魔法方法;
运算法重载及时通过重写这些Python方法实现的;
类似于__X__的形式;
Python中常见的运算法重载:

1__init__
2__del__
3__add_
4__sub__
5__or__

5构造函数和析构函数

构造函数和析构函数:

class Human():
	def __init__(slef,n):
		self.name=n
		print(''__init__',self.name)
	def __del__(self):
		print('__del__')

h=Human('messi')
h='a'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值