Python类基础

基本定义

# 1.如何定义类
# 2.属性方法
# 3.实例化
# 4.self是什么
# 5.构造方法
# 6 name mangling


class A:
    __c = 100
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

    def getC(self):
        return self.__c


a = A(1, 10)
print a.add()
print a.getC()
print  a._A__c

继承

#继承
#class sonClass(fatherClass):

class B(A):
    pass

b= B(1,100)
print b.add()

覆盖

#覆盖
#super方法Python3特有


class A:
    __c = 100
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

    def getC(self):
        return self.__c

class B(A):
    def __init__(self,a,b,c):
        A.__init__(self,a,b)
        self.c = c

    def add(self):
        return self.a+self.b+self.c

    def sub(self):
        return self.a-self.b


bus = B(1,2,3)
print bus.add()

使用super

__metaclass__=type

class A:
    __c = 100
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def add(self):
        return self.a + self.b

    def getC(self):
        return self.__c

class B(A):
    def __init__(self,a,b,c):
        super(B, self).__init__(a,b)
        self.c = c

    def add(self):
        return super(B,self).add()+self.c

    def sub(self):
        return self.a-self.b


bus = B(1,2,3)
print bus.add()

组合


class Man:
    def __init__(self,a):
        self.num = a
class Woman:
    def __init__(self,b):
        self.num = b

class Cls:
    def __init__(self,a,b):
        self.man = Man(a)
        self.woman = Woman(b)
    def person(self):
        print self.man.num,self.woman.num

c = Cls(10,100)
c.person()

绑定

1.类,类对象(类似c++ static),实例化对象的区别
2.绑定self

复习

1.基本实现一个类

__metaclass__=type

class Person:
    def __init__(self,name):
        self.person_name = name
    def setName(self,name):
        self.person_name = name
    def getName(self):
        return self.person_name
    def printName(self):
        print('person name is:',self.person_name)

a = Person('wangz')
a.printName()
>>person name is: wangz
#对属性对外部可以访问
a.person_name = 'zzz'
b=a.printName
b()
>>person name is: zzz

2.属性/方法的私有化(改写,假的)

将上述person_name加上下划线
class Person:
    def __init__(self,name):
        self.__person_name = name
    def setName(self,name):
        self.__person_name = name
    def getName(self):
        return self.__person_name
    def printName(self):
        print('person name is:',self.__person_name)

a = Person('wangz')
a.printName()

方法的私有:
class Pk:
    def __init__(self,a,b):
        self.a=a
        self.b=b
    #这是一个私有的方法,事实上在类的内部翻译成 _Pk__absPk()
    def __absPk(self): 
        self.a=abs(self.a)
        self.b=abs(self.b)
    def add(self):
        self.__absPk()
        return self.a+self.b

a=Pk(1,-2)
print(a.add())
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值