python学习day22 初识面向对象

生活中的类和对象:

类:人类 手机

对象:某个人 某个手机

类 抽象的 有什么属性

对象 有具体的值,根据类规范的

面向过程 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__ 对于类中的名字只能看,不能操作,注意:是类的静态属性

类的命名空间

 类对象指针

类中的静态变量 可以被对象和类调用

猜你喜欢

转载自www.cnblogs.com/happyfan/p/9943413.html