1、面向对象
类:具有相同特征事物的抽象
对象:某个类的具象
2、语法
class 类名:
pass
定义类的关键字:class
类名:符合标识符命名规范,更多使用大驼峰
属性通过变量体现(动态添加),行为通过方法体现
成员访问:
属性:对象.属性名
方法:对象.方法名()
示例:
class Person: #定义类
def run(self): #行为通过方法体现
print(‘每天跑步’)
p=Person() #创建对象
p.name=‘zhangsan’ #属性是动态添加
print(p.name)
p.run() #调用成员方法
3、self
class Person:
def mingzi(self):
print(‘我叫{}’.format(self.name))
def run(self):
self.mingzi() #调用成员方法
print(‘我每天都运动’)
lisi=Person() #创建对象
lisi.name=‘李四’ #添加属性
lisi.run()
lisi=Person()
lisi.name=‘李四’
lisi.run()
4、str
class Person:
#没有重写此方法时,打印的是类名+地址
#重写此方法,打印的是该方法的返回值
def str(self):
return ‘我叫{},今年{}’.format(self.name,self.age)
lisi=Person() #创建对象
lisi.name=‘李四’
lisi.age=18
print(lisi) #打印对象时会调用str方法
s=str(lisi) #转换为字符串时会调用str方法
print(s)
5、init
class Dog:
def str(self):
return ‘name:{} age:{} color:{}’.format(self.name,self.age,self.color)
#构造方法,创建对象后,系统会自动调用该方式完成相关属性的初始化操作
def init(self,name,age,color):
self.name=name
self.age=age
self.color=color
dahuang=Dog(‘大黄’,2,‘yellow’)
print(dahuang)
6、del
class Pig:
#析构方法:当对象即将被释放时,系统会自动调用
#一般做资源释放操作
def del(self):
print(‘我叫佩琪’)
peiqi=Pig()
del peiqi
print(’*******’)
7、换牌
class Pai:
def init(self,color,num):
self.color=color
self.num=num
def str(self):
return ‘{}{}’.format(self.color,self.num)
P1=Pai(‘黑桃’,‘K’)
P2=Pai(‘红桃’,‘A’)
class Hand:
def init(self,Pai):
self.Pai=Pai
right=Hand(P1)
left=Hand(P2)
print(right)
class Person:
def init(self,name,right,left):
self.name=name
self.right=right
self.left=left
def show(self):
print(’{}手里面的牌’.format(self.name))
print(‘左手:{}’.format(self.right.Pai))
print(‘右手:{}’.format(self.left.Pai))
def change(self):
self.right.Pai,self.left.Pai=self.left.Pai,self.right.Pai
xiaoming=Person(‘小明’,right,left)
xiaoming.show()
xiaoming.change()
xiaoming.show()
执行结果
class Person:
def getattr(self, item): # item:要获取的属性名
# print(item)
return ‘******’
def setattr(self, key, value):#设置属性时触发
#key:设置的属性名 value:设置的属性值
self.dict[key]=value #手动保存
def delattr(self, item): #删除属性时自动触发
print(item)
if item in self.dict:
del self.dict[item]#手动删除
#self.dict.pop(item)
zhangsan=Person()
zhangsan.name=‘张三’
#print(zhangsan.name)
del zhangsan.name
#__dict__保存对象属性
print(zhangsan.dict)