Python类的几点笔记

1.
class A:
    def __init__(self, a, b):
        self.a = a
        self.b = b
        print(a, b)
        
        
class B(A):
    def __init__(self, aa, bb):     此处最好写成 a,b因为self.a=a 父类是如此,子类亦应如此,不容易混淆
        a.__init__(self, aa, bb)    #如此调用等价于 super(B,self).__init__(aa,bb)
        print('wosinibaba')
        print(self.a)
        print(self.b)


aaa = b('10', '20')

2.
class person:
    def __init__ (self, name, age):
        self.name = name
        self.age = age
class friend:
    def __init__(self, sex):
        self.sex = sex
    def ff(self):
        print('i is your friend')
class man(person, friend):
    def __init__(self, name, age, sex):
            person.__init__(self, name, age)
            friend.__init__(self, sex)

m = man('zhangsan', 20, 'boy')
m.ff()
print(m.sex)


多继承如果参数不一样只能分开调用,如果参数一样可以用super()函数


一个下划线开头表示保护成员   例如_name
两个下划线开头表示私有成员   例如__name

定义类的时候首字母应该大写

3.
class A:
    '''erza erza woshi ni baba'''
    def __init__(self):
        self.name = 'erza'
    def __str__(self):
        return "<obj:%s>" % self.name
print(A.__doc__)    #打印第一行类的注释
print(A.__dict__)   #打印所有类变量     实例调用的话是所有实例变量
print(A)            #__str__方法改变打印A对象   例如此时打印<class '__main__.A'>


4.
可以把一个类封装成字典

class Dict:
    def __init__(self):
        self.data = {}
    def __getitem__(self, item):
        return self.data[item]
    def __setitem__(self, key, value):
        self.data[key] = value
    def __delitem__(self, key):
        self.data.pop(key)

d = Dict()
d['name'] = 'zhangsan'
print(d['name'])
del d['name']
print(d['name'])

5.   类的类型为 type  可以用type创建类
def __init__(self, name, age):
    self.name = name
    self.age = age
def talk():
    print('Wang Wang Wang!!!')

Foo = type('Foo',(object,), {'__init__':__init__,'talk':talk})

f =Foo('ZhangSan', 10)
print(f.age)
print(f.name)

6.
反射:hasattr判断对象中是否有字符串表示的方法,getattr获得对象中字符串表示的方法,setattr在对象中添加bluck方法添加为的方法名为chocie,delattr删除字符串表示的方法
def bluck(self):
    print('%s is blucking!' % self.name)
class A:
    def __init__(self, name):
        self.name = name
    def talk(self):
        print('wangwang!')
    def eat(self):
        print('%s is eating !' % self.name)

a = A('dog')
choice = input('>>:')
if hasattr(a, choice):
    # getattr(a, choice)()
    func = getattr(a, choice)
    func()
else:
    setattr(a, choice, bluck)            #setattr添加的方法和静态方法类似,如果用到对象需要传递对象
    getattr(a, choice)(a)
delattr(a, 'talk')
a.talk()


    

 

posted @ 2018-08-07 20:36  sqdtss  阅读(109)  评论(0编辑  收藏  举报