Python-面向对象初识

面向对象初始

1.面向过程 vs 函数式编程

函数式编程的优点:减少代码,可读性高

2.函数式编程 vs 面向对象

面向对象的优点:

1.结构清晰,可读性高

2.上帝思维

3.面向对象:

类:对一些事物的统称和概括

对象:实实在在存在的东西,具有特征和功能

面向对象结构

class -- def  都是关键字

def 函数名():
函数体
class 类名:
静态属性(类变量,静态字段)
   方法(类的方法,动态属性,动态字段)
class People:

   mind = "有思想"   # 静态属性

   def eat(self):   # 方法
       print("eat")
   def work(self):  # 方法
       print("work")

类角度操作类

class People:

   mind = "有思想"  # 静态属性

   def eat(self):  # 方法
       print("eat")

查看类下所有的内容

print(People.__dict__)

万能的点  查看单个的属性或方法

增:

People.emotion = "有情感"
print(People.__dict__)

删:

del People.mind
print(People.__dict__)

改:

people.mind = "无脑"
print(People.__dict__)

查:

print(People.mind) # 单独查看一个
People.eat(1)

一般情况下不使用类名去操作方法(类方法除外)

对象角度操作类

# class People:
#
#     mind = "有思想" # 静态属性
#
#     def eat(self): # 方法
#         print("eat")
#
#     def work(self):
#         print("work")

创建对象 -- 类名()

p = People()   # 实例化一个对象
print(p.__dict__)  # 查看对象空间 此时对象空间什么也没有
print(p.mind) # 查看静态属性mind

实例化对象时做了三件事:

1.实例化一个对象,给对象开辟空间

2.自动执行init方法

3.自动将对象的地址传递给了self(隐形传参)

class People:
   mind = "有思想"  # 静态属性
   def __init__(self):   # 初始化函数
        print(111)
        # print(self)

    def eat(self):  # 方法
        print("eat")

    def work(self):
        print("work")
p = People() # 实例化一个对象

类外部给对象创建属性:

p.mind = "无脑"
print(People.__dict__)
print(p.__dict__)
对象只能使用类中的属性和方法,不能进行修改
class People:

   mind = "有思想"  # 静态属性
   def __init__(self,name,age,sex):   # 初始化函数
       self.name = name
       self.age = age
       self.sex = sex

   def eat(self):  # 方法
       print(f"{self.name}eat")


   def work(self):
       print("work")
p1 = People("老大",22,"男") # 实例化一个对象
p2 = People("小智",22,"男") # 实例化一个对象
p3 = People("beauty","22","女") # 实例化一个对象
print(p1.__dict__)
print(p2.__dict__)
print(p3.__dict__)
p2.eat()

什么是self

self其实就是类中方法(函数)的第一个位置参数,只不过解释器会自动将调用这个函数的对象传给self。所以咱们把类中的方法的第一个参数约定俗称设置成self,代表整个就是个对象,这个self可以进行改变但是不建议大家修改

传参分为隐式传参和显示传参,self这种方式就是隐私传参

猜你喜欢

转载自www.cnblogs.com/womenzt/p/12418745.html