python之面向對象(類的定義及封裝)

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('開車去東北')

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章