python学习 day18

面向对象初识

### 面向过程:

# 例1:
s1 = '字符zifu' count = 0 for i in s1: count += 1 # 例2: l1 = [1, 2, 3, 4] count = 0 for j in l1: count += 1

### 函数

def func(s):
    count = 0
    for i in s:
        count += 1
    return count

### 函数

 1 # auth:
 2  def login():
 3      pass
 4  def regisgter():
 5      pass
 6 
 7 # account:
 8  def func1():
 9      pass
10  def func2():
11      pass
12 
13 # shoppingcar:
14 def shopping(username,money):
15     pass
16 def check_paidgoods(username,money):
17     pass
18 def check_unpaidgoods(username,money):
19     pass
20 def save(username,money):
21     pass

### 面向对象:面向对象是一类相似功能函数的集合体。

 1,第一个优点: 更清晰化,更规范化。

 2,面向对象,必须要站在上帝的角度,去考虑问题。类,其实就是一个公共模板;对象,就从具体的模板实例化出来。

# auto
class LoginHandler:
    def login(self):
        pass
    def regisgter(self):
        pass

# account
class Account:
    def func1(self):
        pass
    def func2(self):
        pass

# 购物车
class ShoppingCar:
    def shopping(username,money):
        pass
    def check_paidgoods(username,money):
        pass
    def check_unpaidgoods(username,money):
        pass
    def save(username,money):
        pass
# 面向对象的结构

'''
class 类名():
    
    变量
    
    函数(方法) 
'''

例:
class Human:
    """
    此类主要是构建人类
    """
    mind = '会思想'    # 静态属性 属性 静态变量 静态字段
    language = '使用文字'
    # dic = {}
    # l1 = []
def __init__(self,name,sex,age,hobby):    # 方法 函数 动态属性 # print(self,name,sex,age,hobby) # print(666) self.n = name self.s = sex self.a = age self.h = hobby def work(self): print(self) print('人类会工作') def tools(self): # self.color = 'blue' print('人类都会使用工具')

### 类名

1)类名操作类中的静态属性

第一种:# 查,“   类名.__dict__ ”(Human.__dict__)查看类中所有内容时使用。

print(Human.__dict__)              # 查看类中所有内容
'''
 {'__module__': '__main__', '__doc__': '\n    此类主要是构建人类\n    ', 'mind': '有思想', 'language': '实用语言',
'__init__': <function Human.__init__ at 0x0000024F6ABCD9D8>, 'work': <function Human.work at 0x0000024F6ABCDA60>,
'tools': <function Human.tools at 0x0000024F6ABCDAE8>, '__dict__': <attribute '__dict__' of 'Human' objects>,
'__weakref__': <attribute '__weakref__' of 'Human' objects>}
''' print(Human.__dict__['mind']) # 查看 静态变量 mind 中的内容 # 有思想 Human.__dict__['mind'] = '无脑' # 无法对类中内容进行更改,否则报错 print(Human.__dict__)

第二种:万能的 “  .  ” 可以增删改查类中的静态属性。

Human.walk = '直立行走'   ### 增    # 增加了 walk=‘直立行走’ 的属性
print(Human.walk)

del Human.mind  ### 删    # 将 mind = ‘有思想’ 属性删除
Human.mind = '思维zhang' ### print(Human.mind) # mind = ‘有思想’ 改为了 mind = ‘思维zhang’ print(Human.mind) ### 查 # mind = ‘思维zhang’

2)类名操作类中的方法(除去特殊方法:静态方法,类方法之外,一般不会通过类名执行类中的方法)。

方法: “  类名.方法名(参数)  ”  <--->  Human.work(1231)

Human.work(1231)
# 1222
# 人类会工作

Human.tools(111)    
# 人类都会使用工具

### 对象

----   “  类名()”  这是一个实例化过程,就会产生一个对象。

例:obj = Human()  产生了一个实例化对象 obj 

obj = Human        # 实例化一个过程

实例化一个对象需要经历的3件事情(即 实例化一个对象的过程):

1)产生一个空的对象空间。

print(obj)  # <__main__.Human object at 0x0000019BC6A0F828>

2)自动执行类中的 __init__ 方法并且将这个空的对象空间传给 self 。

print(obj)  

3)在 __init__ 中通过self给这个空间添加属性。

obj = Human('小胖', '', 20, '')
print(obj.__dict__)        # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

# 对象  操作  对象空间  的属性

obj = Human('小胖','',20,'')        # 实例化对象

1)" obj.__dict__  " 查询对象中所有的属性

print(obj.__dict__)        # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

2)通过万能的  " . "  的方式操作对象中的单个属性。

obj.job = 'IT'      #

del obj.n      #

obj.s = ''     #
print(obj.s)

print(obj.__dict__)    #

3)对象可以查询类中的属性。

print(obj.mind)  # 查询 mind = “会思想”
print(obj.language)  # 查询 language = “使用语言”
print(obj.a)    # 查询  a = 20
obj.a
= 666 print(obj.a)  # 改 a = 666

4)对象可以执行类中的方法。

       对象执行类中的所有方法(除去3个特殊方法)Python解释器都会将对象空间主动传给方法的第一个参数self。

print(obj)        
# <__main__.Human object at 0x00000284476FBCF8>

obj.work()
# <__main__.Human object at 0x00000284476FBCF8>
# 人类会工作

 self:类中方法的第一个形参 约定俗成 写  self  便于统一,self 接受的就是 对象空间。

 1 class Human:
 2     """
 3     此类主要是构建人类
 4     """
 5     mind = '会思想'  # 静态属性 属性 静态变量 静态字段
 6     language = '使用文字'
 7     # dic = {}
 8     # l1 = []
 9     def __init__(self,name,sex,age,hobby):  # 方法 函数 动态属性
10         # print(self,name,sex,age,hobby)
11         # print(666)
12         self.n = name
13         self.s = sex
14         self.a = age
15         self.h = hobby
16 
17     def work(self):
18         print(self)
19         print('人类会工作')
20 
21     def tools(self):
22         # self.color = 'blue'
23         print('人类会使用工具')
24         print('猩猩会使用工具')
25         print('猴子会使用工具')
obj = Human('小胖', '', 20, '')
print(obj.__dict__)  # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}

obj.tools()
# 人类会使用工具
# 猩猩会使用工具
# 猴子会使用工具
print(obj.__dict__)  # {'n': '小胖', 's': '男', 'a': 20, 'h': '女'}
self = [1,2,3]
self.append(666)
obj = self
print(obj, self) # [1, 2, 3, 666] [1, 2, 3, 666]

self.append(777)
obj.append(888)
print(obj, self)    # [1, 2, 3, 666, 777, 888] [1, 2, 3, 666, 777, 888]

# 多个对象

# 多个对象
# xiaopang = Human('小胖','男',20,'美女')
# xiangye = Human('相爷','男',18,'肥女')
# print(xiangye,xiaopang)
# print(xiaopang.__dict__)
# print(xiangye.__dict__)
# 例1:

猜你喜欢

转载自www.cnblogs.com/zhongmin/p/10268057.html