生活中的类和对象:
类:人类 手机
对象:某个人 某个手机
类 抽象的 有什么属性
对象 有具体的值,根据类规范的
面向过程 VS 面向对象
自定义类
class Person: # 类名 首字母大写 country = 'China' # 创造了一个只要是这个类就一定有的属性 # 类属性 静态属性 def __init__(self,*args): # 初始化方法,self是对象,是一个必须传的参数 # self就是一个可以存储很多属性的大字典 self.name = args[0] # 往字典里添加属性的方式发生了一些变化 self.hp = args[1] self.aggr = args[2] self.sex = args[3] def walk(self,n): # 定义一个方法,一般情况下必须传self参数,且必须写在第一个 # 后面还可以传其他参数,是自由的 print('%s走走走,走了%s步'%(self.name,n)) print(Person.country) # 类名 可以查看类中的属性,不需要实例化就可以查看 alex = Person('狗剩儿',100,1,'不详') # 实例化 alex就是对象 print(alex.__dict__) # 查看对象的所有属性 字典的形式 # print(alex.name) # 查看属性值 alex.walk(5) # 等价于Person.walk(alex,5) # 调用方法 类名.方法名(对象名) print(Person.__dict__) # 查看Person类下的所有属性 Person.__dict__['country'] = '印度' # 错误 不能通过dict方法修改 Person.country = '印度' # 这样可以修改 alex.__dict__['name'] = '二哥' # 可以修改 print(Person.__dict__['country']) # 可以用字典的方式查看 print(alex.__dict__['name']) # 相当于alex.name alex.age = 23 # 也可以这样直接增加属性
print(alex.country) # 对象可以调用静态属性
实例化:类名加括号就是实例化,会自动触发__init__函数的运行,可以用它来为每个实例定制自己的特征
对象 = 类(参数是init方法的)
过程:
- 类名() 首先 会创造出一个对象,创建了一个self变量
- 调用init方法,类名括号里的参数会被这里接收
- 执行init方法
- 返回self
对象能做的事:
- 查看属性
- 调用方法:不用传self参数
- __dict__ 对于对象的增删改查操作都可以通过字典的语法进行,对象的属性
类名能做的事:
- 实例化,实例就是对象
- 调用方法: 只不过要自己传递self参数
- 调用类中的属性,也就是调用静态属性
- __dict__ 对于类中的名字只能看,不能操作,注意:是类的静态属性
类的命名空间
类对象指针
类中的静态变量 可以被对象和类调用