python3 面向对象补充


f = People('egon',18,'male')

非函数
hasattr # hasattr(f,'name')
getattr # getattr(f,'name')
setattr # setattr(f,'name','EGON')
class Teacher:
    school = 'oldboy'
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def teach(self):
        print(self.name)

# print(hasattr(Teacher,'school'))
# print(getattr(Teacher,'school'))
# print(getattr(Teacher,'asdfadsf','没有这个'))
# setattr(Teacher,'school','欧德博爱')
# print(Teacher.school)
# delattr(Teacher,'school')
# print(Teacher.__dict__)


t = Teacher('egon',18)

# print(hasattr(t,'name'))
# print(getattr(t,'name'))
# setattr(t,'name','EGON')
# print(getattr(t,'name'))
#
# print(t.__dict__)
# delattr(t,'name')
# print(t.__dict__)

# print(getattr(t,'teach'))
# print(getattr(t,'school'))
# print(t.school)
# t.school = 'hahhahahahha'
# print(getattr(Teacher,'school'))
# print(getattr(t,'school'))
# print(t.__dict__)

item系列
__getitem__ # f['name']
__setitem__ # f['name'] = 'EGON'
__delitem__ # del f['name']
__len__ # len(f)
class Foo:
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def __getitem__(self, item):
        # print(self,item,type(item))
        # return getattr(self,item)
        return self.__dict__[item]
    def __setitem__(self, key, value):
        # setattr(self,key,value)
        self.__dict__[key]=value

    def __delitem__(self, key):
        # delattr(self,key)
        self.__dict__.pop(key)

    def __len__(self):
        return 10
f=Foo('egon',18,'male')
# print(f.name) #f['name']
# print(f.age) #f['age']
# print(f.sex) #f['sex']

# print(f['name'])

# f['name']='egon_nb'
# print(f.__dict__)
# del f['name']
# print(f.__dict__)

print(len(f))

f = People
__str__ # print(f) # f.__str__()
class Teacher:
    def __init__(self,name,age):
        self.name=name
        self.age=age
        self.courses=[]

    def teach(self):
        print('%s teach' %self.name)

    def __str__(self):
        return '<name:%s age:%s>' %(self.name,self.age)

class Course:
    def __init__(self,name,price,period):
        self.name=name
        self.price=price
        self.period=period
    def __str__(self):
        return '《name:%s price:%s period:%s》' %(self.name,self.price,self.period)

# egon=Teacher('egon',18)
# print(egon) #egon.__str__()
# print(egon) #egon.__str__()

__del__ # del f # f.__del__()
import time
class Foo:
    def __init__(self,x):
        self.x=x
        print('connect mysql') #conn=abcdef('192.168.1.10',3306)

    def __del__(self):
        '''做一些与这个对象有关的清理操作'''
        # conn.close()
        # file.close()
        print('====>')
f=Foo(10)
del f #f.__del__()
time.sleep(3)
print('主程序')
原文地址:https://www.cnblogs.com/lucaq/p/7133334.html