面向对象1

 

面向对象的优点:

面向对象编程是一类相似功能函数的集合,使代码更清晰化,更合理化。 

面向对象,是一个公共模板类,从中实例化出对象。对象拥有这一类的的属性和方法,也有自己的属性和方法

创建类

class Human:    #class定义一个类,Human为类名,类名使用驼峰型命名首字母大写
   """
  创建一个Human类
  """
  mind
= "有思想" #第一部分:静态属性|属性|静态变量|静态字段 dic = {} lst = [] def fire(self): #第二部分:方法|动态属性|函数 print("使用火")

 

从类名的角度研究类

类名操作静态属性

类名.__dict__ 查看类的所有内容

class Human:
    """
    创建一个Human类
    """
    mind = "有思想"
    dic = {}
    lst = []
    def fire(self):
        print("使用火")
print(Human.__dict__)
print(Human.__dict__["mind"])
Human.__dict__["mind"]= "脑残"
print(Human.__dict__)  #报错
#通过这种方式只能查询,不能增删改
#此方式一般只用于查看全部内容,不查询单独属性

 

类名+"."查询类的某一内容

class Human:
    """
    创建一个Human类
    """
    mind = "有思想"
    dic = {}
    lst = []
    def fire(self):
        print("使用火")

print(Human.mind)                #查
Human.mind = "脑残"               #改
print(Human.mind)   
del Human.mind                   #删
Human.communication = "语言"      #增
print(Human.communication)            

 

类名操作动态方法

  除了静态方法类方法,一般不会通过类名操作类中的方法。

从对象的角度研究类

对象产生

对象是从类中实例化出来的,类名+(),就是一个实例化过程。

class Human:
    mind = "有思想"
    dic = {}
    lst = []
    def fire(self):
        print("使用火")
        
human_1 = Human()   #类名+(),实例化一个对象

 

在实例化过程中会自动调用__init__方法

class Human:
mind = "有思想"
def __init__(self):
print("调用了__init__")
print(f"我是self:{self}")
def fire(self):
print("会使用火")

human_1 = Human()  #只要实例化对象,就会自动执行类中的__init__方法
print(f"我是human_1:{human_1}")

# 调用了__init__  
# 我是self:<__main__.Human object at 0x00000000021E8DD8>
# 我是human_1:<__main__.Human object at 0x00000000021E8DD8>
  #self 的内存地址与 human_1的内存地址相同

 

实例化一个对象共发生了三件事:

  1.在内存中开辟了一个对象空间。

  2.自动执行类中__init_方法,并将这个对象空间传给了__init__方法的第一个位置参数self。

  3.在__init__方法中通过self给对象空间添加属性

class Human:
    mind = "有思想"
    def __init__(self,name,age):
        #self 和human_1的内存地址是同一个
        self.name = name
        self.age = age
    def fire(self):
        print("会使用火")

human_1 = Human("Jame",25)
print(human_1.name) #Jame
print(human_1.age)  #25    

 

对象操作对象空间属性

对象.__dict__ 查询对象的所有属性。

class Human:
mind = "有思想"
def __init__(self,name,age):
self.name = name
self.age = age

human_1 = Human("Jame",25)
print(human_1.__dict__)
print(human_1.__dict__["age"])

# {'name': 'Jame', 'age': 25}
# 25

 

对象+"."操作对象的单个属性

class Human:
    mind = "有思想"
    def __init__(self,name,age):
        self.name = name
        self.age = age

human_1 = Human("Jame",25)

print(human_1.name)     #查
human_1.name = "Danny"  #改
print(human_1.name)
human_1.work = "IT"     #增
print(human_1.work)
del human_1.work        #删

 

对象查看类中的属性

class Human:
    mind = "有思想"
    communication = "语言"
    def __init__(self,name,age):
        self.name = name
        self.age = age

human_1 = Human("Jame",25)

print(human_1.communication)
human_1.mind = "脑残"    #在对象的内存空间创建了一个mind属性,未修改类中的属性
print(human_1.mind)    
print(Human.mind)

# 语言
# 脑残
# 有思想

 

对象操作类中的方法

class Human:
    mind = "有思想"
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def fire(self):
        print("使用火")

human_1 = Human("Jame",25)
human_1.fire()

#使用火

 

类中的方法一般(除去类方法和静态方法外)都是通过对象执行的。

对象执行类中的方法时,会自动将对象空间传给方法中的第一个参数,把类中方法的第一个参数预定俗成为self,代表的是调用这个方法的对象。

 

面向对象初识

 

posted on 2019-02-16 12:41  六月_海动  阅读(60)  评论(0)    收藏  举报