python4-反射_類

反射:

有:demo.py    裏面有 函數Foo()

str1 = 'demo'
str2 = 'Foo'
module = __import__(str1)
func = getattr(module,str2)

實例:通常適用於url
代碼目錄結構爲: backend包 下面又account.py模塊 裏面又login函數           
data = raw_input('請輸入地址:') #account/login   
array = data.split('/')

userspance = __import__('backend.'+array[0])
model = getattr(userspance,array[0])
func = getattr(model,arry[1])
func()


面向對象:
類:

class People(object):
    name='name'                              這是屬於類的變量,類直接可以訪問。   
    dict={}                               字典是所有實例共享一份數據,共有
    def __init__(self,name,age,job):   初始化函數(構造函數), 定義參數.這裏的變量是私有的
        self.name=name                       加self是變成實例變量,其他函數也能調用
        self.age=age
        self.job=job
        self.__name=name          私有變量,外部不能訪問
    def walk(self):                              都需要加self(self指的是實例本身)
        print "i am walking..."
    self.__breath()                         內部可以調用
     def talk(self):
        print "talking with sb...",self.name
     def __breate(self):                        私有方法外部不能訪問,對象不能訪問
        pass
p1=People('dengminhui','10','enginner')          實例化,傳入參數
p1.walk()
p1.talk()
p1.__breath       不能調用

強行調用私有變量  p1.__People.__name


類的繼承:

class SchoolMember(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        selef.sex=sex
    def func(self):
         pass
繼承  
class Student(SchoolMember):
    def __init__(self,name,age,sex,grade):
        SchoolMember.__init__(self,name,age,sex)      這裏是繼承父類的變量
        self.grade=grade                              重寫構造函數後,這裏是添加的變量

    def func(self):
        SchoolMember.tell(self)                       函數重寫
        添加code

多繼承
class School(object):
    def __init__(self,name,tel,addr):
        self.tel=tel
        self.addr=addr
    self.stu_list=[]
    self.tech_list=[]

class Student(SchoolMember,School):



靜態方法:

class MyClass(object):
    age = 22
    def __init__(self):
        self.name = "a"
     def sayhi(self):
         print "---sayhi 1"
      @staticmethod              #靜態方法 跟類沒什麼關係,不需要實例化即可調用,類的工具包
      def sayhi2():             不需要加self
          print "---sayhi 2",self.name,self.age-----------> self對象不會傳進來,所以都不能訪問調用
       @classmethod               不需要實例化即可調用,不能訪問實例數據。。。。實例化也可以調用屬性
       def sayh3(self):
            print "---sayhi 3"  sself.name self.age       不能訪問self.name,只能訪問類屬性
    @property                  把一個靜態方法變成靜態屬性
        def sayh4(self):
        print "----sayhi4"
        return 'test'       
調用:
MyClass.syahi2()

m=MyClass()
m.sayh4              ------> 結果會是 test


print m.__dict__   __dict__方法會把對象的所有屬性全部打印出來。
新式類和經典類:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章