1、面向对象-类
1.1 类的创建
class 类名( ) :
pass
class MyClass :
def fun ( self) :
print ( '1111' )
pass
pass
mc = MyClass( )
mc. fun( )
mc1 = MyClass( )
mc1. fun( )
print ( isinstance ( mc, MyClass) )
print ( type ( mc) )
1.2 类的使用
class MyClass :
name = '周慧敏'
def sing ( self) :
print ( '唱歌可好听了!' )
mc = MyClass( )
mc. name = '李易峰'
mc. sing( )
self参数:self参数是方法自动会补全的参数,一般不需要手动传递,调用方法时,不需要传递这个实参,哪个对象调用这个方法,那么这个self就代表哪个对象
1.3 特殊方法
__init __():作用:如果init方法里面有参数,在创建实例对象的时候,那么必须传递参数,否则报错使用场景:为了方便,不用再创建实例的时候还需要去查看代码需要创建一些什么类型的属性 特殊方法会在特定的时候自己调用,不需要我们认为的去调用 形如:__init __()
class Xxx :
def __init__ ( self, name) :
self. name = name
x = xxx( 'name' )
1.4 封装
封装:就是为了数据的安全性,形成了不成文的规定,同时看到你这么 创建属性,那么就不会轻易的修改这个属性值 _name 私有属性 __name隐藏属性 getter方法:控制是否是可读属性 setter方法:控制是否是只读属性,如果不是只读属性,那么就是存在setter方法,就可以修改 @property :使我们的属性的获取和修改变得更加简洁
@property
def name ( self) :
pass
@name. setter
def name ( self)
pass
1.5 继承
class A ( object ) :
pass
class B ( A) :
pass
1.5.1 方法的重写
class A ( object ) :
def run ( self) :
pass
class B ( A) :
def run ( self) :
pass
1.6 super
class A ( object ) :
def run ( self) :
pass
class B ( A) :
def run ( self) :
super ( ) . run( )
pass
1.7 多重继承
class A ( object ) :
def run ( self) :
pass
class B ( object ) :
def run ( self) :
pass
class C ( A, B) :
pass
1.8 多态
不关心对象的类别,只关心对象的实例方法的名字是否一样,一样的话,则可以使用一个借口调用多个不同的实例方法,展现出不同的形态
class A ( object ) :
def fly ( self) :
print ( '我会飞' )
class B ( object ) :
def fly ( self) :
print ( '你会飞吗' )
class C ( object ) :
def fly ( self) :
print ( '他不会飞' )
def fun ( obj) :
obj. fly( )
a = A( )
b = B( )
c = C( )
fun( a)
fun( b)
fun( c)
1.9 单例模式的创建(__new__)
class Single ( object ) :
count = None
def __new__ ( cls, * args, ** kwargs) :
if cls. count is None :
cls. count = super ( ) . __new__( cls)
return cls. count
else :
return clas. count