1. 程式人生 > >反射 內置方法

反射 內置方法

repr sel 格式化輸出 obj int 內置 文件 .class school

反射~~~

  反射 使用字符串數據類型的變量名來獲取這個變量的值

反射類中的變量: 靜態屬性 類方法 靜態方法

class Foo:
    school = ‘qinghua      #靜態屬性
    country = China
    language = English

    @classmethod             #類方法
    def class_method(cls):
        print(cls.school)
    @staticmethod            #靜態方法
    def static_method():
        
print(666666666) def wahaha(self): print(wahaha) A = Foo() A.wahaha() Foo.wahaha(1) A.class_method() Foo.class_method() Foo.wahaha() Foo.static_method() Foo.class_method() while 1: inpu = input(>>>) # 直接類名+inpu的 輸入一個 打印一個 print(getattr(Foo,inpu)) ##if inpu == ‘school‘:print(Foo.school) #如果輸入的是school 就打印old_boy
print(getattr(Foo, school)) #反射 類名 + 字符串"靜態屬性名" Foo.class_method() getattr(Foo, class_method)() Foo.static_method() getattr(Foo,static_method)() print(getattr(Foo, wahaha)(1)) #不推薦用類名去反射一個方法名 print(hasattr(Foo, wahaha))

反射對象中的變量 對象屬性 普通方法

class Foo:
    def __init__(self,name,age):
        self.name 
= name self.age = age def eat(self): print(%s is eat % self.name) p1 = Foo(alexsb,30) print(getattr(p1, name)) print(getattr(p1, age)) getattr(p1,eat)()

alexsb
30
alexsb is eat

普通的給文件名 變更 和getattr方法

import os
os.rename(English,English777)
getattr(os,rename)(English777,china)

本文件反射

  import sys

  getattr(sys.modules[name],‘所有定義在這個文件中的名字‘)

setattr 給命名空間的某一個名字設置一個值

delattr 刪除某一個命名空間中變量對應的值

內置方法

  不用特別去調用這個方法就可以觸發這個方法的執行

class Foo:
    def __str__(self):
        return abcd
    def __repr__(self):
        return dcba
obj = Foo()

__str__ :

    print(obj) 打印觸發

    ‘%s’ % obj 格式化輸出觸發

    str() 強轉觸發

__repr__:

    ‘%r‘ % obj

    repr(obj)

反射 內置方法