面向?qū)ο蟾拍睿?/p>
特性: class object
封裝
集成
多態(tài)
===
可以給python的對(duì)象添加屬性灾炭。
class Riole:
sex = 'male'
def __init__(self, name):
self.name = name
def shot(self, who):
print "shot %s" %who
r1 = Riole('a')
r1.ax = 'asd'
print r1.ax
print r1.sex
類變量的用途消痛,是大家共有的屬性泊业,節(jié)省開銷把沼。
可以改變對(duì)象的類變量,其實(shí)是初始化對(duì)象時(shí)候在內(nèi)存新給了一個(gè)內(nèi)存地址存放”類變量“吁伺,若果類變量是集合形式(列表饮睬,字典)類變量是共用的:
class Riole:
sex = 'male'
def __init__(self, name):
self.name = name
def shot(self, who):
print "shot %s" %who
r1 = Riole('a')
r2 = Riole('b')
r1.ax = 'asd'
print r1.ax
r1.sex = 'female'
print r1.sex
print r2.sex
print Riole.sex
這個(gè)例子不一樣:
class Rio:
num = 0
num_list = []
def __init__(self, name, age):
self.name = name
self.age = age
r1 = Rio('a', 1)
r2 = Rio('b', 1)
r3 = Rio('c', 1)
r1.num = 22
r1.num_list.append('a')
r4 = Rio('d', 1)
print r2.num_list
print r4.num_list
構(gòu)造函數(shù)與析構(gòu)函數(shù):
析構(gòu)函數(shù):在實(shí)例釋放,銷毀的時(shí)候執(zhí)行的篮奄,通常用于做一些收尾工作捆愁。比如關(guān)閉一些數(shù)據(jù)庫鏈接割去。
class Person:
cn = 'China'
def __init__(self,name, age, address):
self.name = name
self.age = age
self.address = address
def __del__(self):
print 'del self'
析構(gòu)函數(shù)不用傳遞參數(shù)。
在子類新加實(shí)例屬性:
class People:
def __init__(self, name, age):
self.name = name
self.age = age
def eat(self):
print("%s is eating" %self.name)
def sleep(self):
print("%s is sleeping " %self.name )
class Man(People):
def __init__(self, name, age, money):
#super().__init__(name, age) # or People.__init__(self, name, age) # or super(Man, self).__init__(name, age)
People.__init__(self, name, age)
self.money = money
def piao(self):
print("%s is piaoing" %self.name)
def sleep(self):
People.sleep(self)
print("%s is sleeping very good." %self.name)
注意:上面的:
def sleep(self):
People.sleep(self)
print("%s is sleeping very good." %self.name)
People.sleep(self)
調(diào)用了父類的sleep方法昼丑,注意調(diào)用方式呻逆。
等價(jià)于super().sleep()
經(jīng)典類與新式類
以后都統(tǒng)一使用新式類的寫法,這個(gè)是規(guī)范菩帝。
class Person: # 經(jīng)典類
class Person(object ): # 新式類
Python 2.x中默認(rèn)都是經(jīng)典類咖城,只有顯式繼承了object才是新式類
Python 3.x中默認(rèn)都是新式類,不必顯式的繼承object
object是基類呼奢,所有類的基類宜雀。
class SchoolMember(object):
=====
類方法:
class Animal(object):
def __init__(self, name):
self.name = name
def talk(self):
pass
@classmethod
def animal_talk(self, obj):
obj.talk()
class Dog(Animal):
def talk(self):
print("往往")
class Cat(Animal):
def talk(self):
print("喵喵")
d = Dog("dog")
c = Cat("cat")
ani = Animal('animal')
Animal.animal_talk(c)
=====
pickle
是可以序列化任意對(duì)象的。
====
1._function與function:
def default_quota_update(request, **kwargs):
novaclient(request).quota_classes.update(DEFAULT_QUOTA_NAME, **kwargs)
def _get_usage_marker(usage):
marker = None
if hasattr(usage, 'server_usages') and usage.server_usages:
marker = usage.server_usages[-1].get('instance_id')
return marker
帶下劃線的函數(shù)握础,是私有函數(shù)辐董,使用import的時(shí)候,導(dǎo)入不進(jìn)去禀综。