初识面向对象
class Person: # 注意class 与 def 的不同 $$$ Person——》类名 country = 'China' # 创造了一个只要是这个类就一定有的属性 # 叫做类属性 也称静态属性 不会随对象的创建而改变 def __init__(self,*args): # __init__ --》初始化方法 self是对象,是一个必须传的参数 print(self.__dict__) # self就是一个可以储存很多属性的大字典 self.name = args[0] # 只不过与def语法相比往字典里添加属性的方式发生了一些变化 self.hp = args[1] self.aggr = args[2] self.sex = args[3] print(self.__dict__) print(id(self)) # 现在self里只有属性,下面再定义方法 def walk(self,n): # self可以改成其他名称的参数,它只是一个局域变量名,结果是不变的 # 若函数写到class里,就成了方法,一般情况下必须传self参数,且必须写在第一个 print('走走走') print('%s走走走,走了%s步' % (self.name,n)) print(Person.country) # 类名 可以查看类中的属性,不需要实例化就可以查看 alex = Person('狗剩儿',100,1,'不详') # '狗剩儿',100,1,'不详' 赋给*args $$$$ 实例化:调用类,然后拿到对象alex的过程 # print(alex.__dict__) # 证明self就是alex ,alex 和 self 其实一样,是字典 print(id(alex)) # self 和 slex 的ID 一样 print(alex.name) # 查看属性值 print(Person.__dict__) # 发现有刚刚再Person类下定义的walk方法 并用它查看所有属性 print(Person.__dict__['country']) print(alex.__dict__) alex.__dict__['name'] = '二哥' print(alex.__dict__) print(alex.name) alex.name = '二哥' print(alex.name) Person.walk(alex,5) # 调用方法 类名.方法名(对象名称) alex.walk(5) # alex.walk = Person.walk(alex) 即 对象.方法名() # 对象 = 类名() # 过程: # 类名Person(),首先会创造一个alex对象 ,创建了一个self变量(创建class时,就已经有self了) # 调用init方法,类名括号里的参数会被这里的*args接受 # 执行init方法 # 返回self给对象alex,而不用return ,--》def 与 class 的不同 # 对象能做的事: # 查看属性 # 调用方法 # __dict__ 对于对象的增删改查操作都可以通过字典的语法,但最好还是通过属性修改,如alex.name = '二哥' # 类名能做的事: # 实例化 # 调用方法 # __dict__ 对于类中的名字只能看不能操作
- 大致执行过程
作者:chauncylii
出处:https://www.cnblogs.com/passengerlee/p/11965398.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
觉得文章不错,点个关注呗!