【python】面向对象初识

类: 具有相同属性和技能的一类事物

#对象:具体类的实例化表现

 

class Person: #类名的首字母必须大写

    '''

    类体只分两部分:变量部分和方法(函数)部分;

    名词归于变量,动词归于方法。

    '''

    mind = '有思想' #变量  静态变量   静态字段

    animal = '高级动物'

 faith = '有信仰'

 

    def __init__(self,name,age,hobby):  #构造函数

        self.name = name  #相当于 变量名 = 实例化需要传入的值

        self.age = age

        self.hobby = hobby

 

    def work(self):  #方法  函数  动态变量

        print("都要工作...")

 

    def shop(self):

        print("都要消费...")

 

1、类名操作角度:

1.1操作类中的静态变量:重要

        #方法1:Person.__dict__ 查询类中所有内容(增删改不可操作)

print(Person.__dict__)   #返回当前类中所有内容,返回的数据格式是字典

print(Person.__dict__["animal"]) #根据key查询对应value

"""

Person.__dict__["animal"] = '无脑' 

print(Person.__dict__["animal"]) #会报错,__dict__不可进行增删改

"""

        #方法2:万能的点  对类中单个变量进行增删改查

print(Person.animal)  #查

Person.money = '运用货币'  #增

Person.mind = '无脑'  #改

del Person.animal 

print(Person.__dict__) 

 

 

2、对象角度:

Person()      #类名()的这个过程叫实例化一个对象 (创建一个对象的过程)

#ret = Person()  ret代表的就是这个对象,ret的值和返回给self的值是一样的

ret = Person('alex',18,'lady')  #实例化对象

print(ret.__dict__)  #打印内容:{'name': 'alex', 'age': 18, 'hobby': 'lady'}

 

类名() 内部执行过程:

#1)产生一个实例(对象,可以理解成产生一个对象空间,内存地址)

#2)在实例过程中最先执行__new__方法,用来创造一个对象然后再自动执行类中的__init__ 方法,并将该对象的内存地址传给函数里第一个位置参数,约定俗成叫self

#3)给对象封装相应的属性(变量)

 

2.1 对象操作对象中的静态变量

        #1、__dict__ 查看对象中所有的内容

ret = Person('alex',18,'lady')

print(ret.__dict__)

        #2、万能点操作

print(ret.name)  #查询

ret.high = '175' #增

print(ret.high) #查单个的值

print(ret.__dict__) #查该对象下所有的内容 

del ret.name  #删

ret.age = 73  #改  

 

2.2 对象操作类中的静态变量 #只能查询

print(ret.name)

 

2.3对象操作类中的方法 (常用)

ret.shop()

#对象调用类中的所有方法,默认第一个参数self是不用传的,同__init__,self的值就是ret的值 (对象的内存地址)

 

 

说明1:通过类名.变量名 可以修改变量值,但对象名.变量名不可以修改,只会在当前命名空间中新增一个局部变量

class Count:

    count = 0

    def __init__(self):

       pass

 

#通过类名可以更改类中静态变量值

Count.count = 6

print(Count.__dict__)  #此时查到静态变量值改为6

 

#但是通过对象,不能改变 只能引用静态变量值

obj1 = Count()

print(obj1.count)  #  0

obj1.count = 6 #该操作是给对象空间添加一个变量count = 6 ,修改的并不是静态变量值

print(obj1.count)   # 6

 

 

 

说明2:

'''

count = 0 

def func():

    print(count)

 

func()   #函数里全局变量count可直接调用并打印

'''

 

class Count:

    count = 0

    def __init__(self):

       # print(count)  #在类中这么使用会报错,应用print(Count.count)

  #Count是全局的,但变量count属于局部变量,若想直接用必须用类名.变量名引用

       Count.count = Count.count + 1 

        

obj1 = Count() # 实例化一个对象

obj1 = Count()

obj1 = Count()

#print(Count.count)

print(obj1.count)

你可能感兴趣的:(【python】面向对象初识)