def foo(name, age, gender, content):
print(name, age, gender, content)
第一次定義類:
class Bar:
def foo(self, name, age, gender, content):
print(name, age, gender, content)
obj = Bar()
obj.foo(小明,10歲,男,上山去砍柴)
obj.foo(小明,10歲, 男,開車去東北)
obj.foo(小明,10歲,男,開車去東北)
類和函數的比較:
一、定義
函數:
def + 函數名(參數)
面向對象:
class => 名字叫Bar類
def => 名字叫foo的方法,第一個參數必須是self
二、執行
函數:
函數名(參數)
面向對象:
o = Bar() # 創建中間人(對象、實例)
o.foo()
定義類並執行類中的方法:
class 類名:
def 方法名(self, arg):
pring(arg)
return 1
中間人 = 類名()
ret = 中間人.方法名(1)
print(ret)
self代指調用方法的對象(中間人)
class Bar():
def foo(self, arg):
print(self, arg)
z1 = Bar()
print(z1)
z1.foo(111)
print('*'*20)
z2 = Bar()
print(z2)
z2.foo(666)
<__main__.Bar object at 0x0000017CAFC71BA8>
<__main__.Bar object at 0x0000017CAFC71BA8> 111
********************
<__main__.Bar object at 0x0000017CAFC89EF0>
<__main__.Bar object at 0x0000017CAFC89EF0> 666
class Bar():
def foo(self, arg):
print(self, self.name, self.age, self.gender, arg)
z = Bar()
z.name = 'alex'
z.age = 84
z.gender = 'zhong'
z.foo(666)
# <__main__.Bar object at 0x00000205FFCA9EF0> alex 84 zhong 666
z1 = Bar()
z1.name = 'eric'
z1.age = 73
z1.gender = 'nv'
z1.foo(666)
# <__main__.Bar object at 0x00000200D89F0470> eric 73 nv 666
第二次定義類:
class Bar:
def add(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
def delete(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
def updates(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
def get(self, name, age, gender, content):
print(self.name, self.age, self.gender, content)
obj = Bar()
# 把公用的參數放到了類裏,這就完成了“封裝”
obj.name = '小明'
obj.age = 10
obj.gender = ‘男’
obj.add(上山去砍柴)
obj.delete(開車去東北)
obj.updates(開車去東北)
# 構造方法
特殊作用:在obj = 類名()內部 1、創建對象 2、通過對象執行類中的一個特殊方法
class Bar:
def __init__(self, name, age):
"""
構造方法:一般做初始化,即一些公用參數
"""
self.name = name
self.age = age
print('123')
def foo(self):
print('456')
z = Bar('alex', 84) # 執行Bar()內部就自動執行__init__方法
print(z)
print(z.name)
z.foo()
# 123
# <__main__.Bar object at 0x000001B1E5CC9EF0>
# alex
# 456
舉個栗子:
class Person:
def __init__(self, name, age):
self.n = name
self.a = age
def show(self):
print("%s---%s" % (self.n, self.a))
lihuan = Person('李歡', 18)
huxianglin = Person('胡香林', 73)
lihuan.show()
huxianglin.show()
對上述“第二次定義的類”進行修改
class Bar:
def __init__(self):
self.name = '小明'
self.age = 10
self.gender = '男'
def add(self, content):
pass
def sub(self, content):
pass
def updates(self, content):
pass
def get(self, content):
pass
obj = Bar()
obj.add('上山去砍柴')
obj.sub('開車去東北')
obj.updates('開車去東北')