Python类的几点笔记

本文详细介绍了Python中类与对象的基本概念,包括类的定义、初始化方法、多重继承、类属性与实例属性的区别,以及如何将类转换为字典等高级特性。同时,还讲解了如何使用type动态创建类,并探讨了反射机制的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()


    

 

转载于:https://www.cnblogs.com/sqdtss/p/9439285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值