python学习第六天

#python面向对象编程

#类的创建
#类:具有共同特征的事件的集合
#例:人Person类
#类的定义
class Person:
    def __init__(self):                 #类中的函数也称方法,此方法的名称为__init__构造方法,非普通方法
         self.name='刘备'                #形参self是必要的
         self.gender='男'
         self.weight='60'
         print('An instance created')
#类的实例化
p1=Person()
print(p1.name)
print(p1.gender)
print(p1.weight)

#class Stu:
#    __name="张三"                          #私有
#print("name的初始值是:",Stu.name)
#Stu.name="李四"
#print("name的现值是:",Stu.name)

#内置类属性
'''
__dict__        #属性
__doc__         #文档字符串
__name__        #类名
__module__      #类定义所在模块
__bases__       #类所有父类构成元素
'''

#创建类的对象实例
class Stu:
    Name="张三"
    age=19
stu=Stu()               #创建对象
print("学生姓名:%s,年龄:%d"%(stu.Name,stu.age))

#构造方法实例
class Stu:
    def __init__(self):
        self.name="张三"
        self.stuid=1
    def displayCount(self):
        print("学生姓名:%s,学号%d"%(self.name,self.stuid))
stu=Stu()
stu.displayCount()
#带参数构造方法实例
class Stu:
    empCount=0
    def __init__(self,name,stuid):
        self.name=name
        self.stuid=stuid
        Stu.empCount+=1
    def displayCount(self):
        print("学生总数%d人"%(Stu.empCount))
    def displaystu(self):
        print("name:",self.name,"stuid:",self.stuid)
stu=Stu("张三",1)
stu.displayCount()
stu.displaystu()

#构析方法
class Stu:
    def __init__(self,name,stuid):
        self.name=name
        self.stuid=stuid
    def __del__(self):
        print("已释放资源")
stu=Stu("张三",1)
del stu
print("进行垃圾回收")


#封装
#私有变量       __变量名
#私有方法       __方法名()
#类的私有方法操作实例
class JustCounter:
    __secretCount=0
    publicCount=0
    def count(self):
        self.__secretCount+=1
        self.publicCount+=1
        print(self.__secretCount)
couunter=JustCounter()
couunter.count()
couunter.count()
print(couunter.publicCount)
print(couunter._JustCounter__secretCount)


#继承
class Person:
    def __init__(self,name,gender='男',weight=70):
        self.name=name
        self.gender=gender
        self.weight=weight
        print('A person named %s'%self.name)
    def say(self):
        print('My name is %s'%(self.name))
class Teacher(Person):
    def teach(self,lesson):
        print("%s terchs %s"%(self.name,lesson))
class Student(Person):
    def study(self,lesson):
        print("%s studies %s"%(self.name,lesson))
p=Person('关羽','男','80')
p.say()
t=Teacher('孔子','男','90')
t.say()
t.teach('python')
s=Student('王昭君','女','60')
s.say()
s.study('python')

#issubclass()或isinstance(obj,class)方法检测是否是子类
#布尔函数,返回True


#多态
#方法重写与运算符重载:实现多态的技术基础
#方法重写实例
class Parent:
    def myMethod(self):
        print("调用父类方法")
class Child(Parent):
    def myMethod(self):
        print("调用子类方法")
c=Child()                   #子类实例
c.myMethod()                #子类调用重写方法

#类的功能方法一览表
#__init__(self[...]         #构造      obj=className(...)
#__del__(self)              #析构      del obj
#__repr__(self)             #解释器读取 repe(obj)
#__str__(self)              #人读取    str(obj)
#__cmp__(self,X)            #比较      cmp(obj,X)

#运算符重载
class Computation():
    def __init__(self,value):
        self.value=value
    def __add__(self, other):
        return self.value+other
    def __sub__(self, other):
        return self.value-other
c=Computation(5)
x=c+5
print("重构后加法运算的结果是:",x)
y=c-3
print("重构后减法运算结果是:",y)

#常见运算符重载方法
'''
__init__
__del__
__add__
__radd__                #右侧加法
__iadd__                #实地加法
__sub__                 #减法
__or__
__repr__    __str__     #打印,转换
call                    #调用
getattr__               #点号运算
setattr                 #属性赋值语句
delattr                 #属性删除
__getattribute__        #属性获取
__getitem__             #索引运算
__setltem__             #索引赋值语句
__delitem__             #索引和分片删除
__len__
_ _boll_ _
__lt__ __gt__ __le__ __ge__ __ep__ __ne__#特定比较
__iter__    __next__    #迭代环境
__contains__            #成员关系测试
__index__               #整数值
__enter__   __exit__    #环境管理器
__get  __sel__  __delete__#描述符属性
__new__                 #创建
'''

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值