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('开车去东北')

 

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