PythonDay04---from DFZY

2019.8.19

面向对象编程基础

类和对象
类是对象的蓝图和模板,而对象是类的实例

class Student(object):
#标识   类名
    #object可以不写 #class class_name:
    
    # 通过这个方法我们可以为学生对象绑定name和age两个属性
    def __init__(self, name, age):
        self.name = name
        self.age = age
	# __init__是一个特殊方法用于在创建对象时进行初始化操作(所有的类都必须重写init函数) 
    def study(self, course_name):
    #self印记作用,两个对象之间可以相互调用
        print('%s正在学习%s.' % (self.name, course_name))
	#在类中调用需要使用'.'调用
    # PEP 8要求标识符的名字用全小写多个单词用下划线连接
    # 但是部分程序员和公司更倾向于使用驼峰命名法(驼峰标识)
    # self.name是一个独立参数和name不一样
    # 在函数内部调用函数用self.函数名()
    # 在类中打印变量直接用print
    def watch_movie(self):
        if self.age < 18:
            print('%s只能观看《熊出没》.' % self.name)
        else:
            print('%s正在观看岛国爱情大电影.' % self.name)

进度条案例

import time
class Jdt(object):
    def __init__(self):
        self.count = 1
    def jindutiao(self):
        for i in range(0,100):
            time.sleep(0.1)
            print('%d%%\r'%(i+1),end="",flush=True)
            if i % 5 == 0:
                res = '#'*self.count
                print('%s %d%%\r'%(res,(i+5)),end="",flush=True)
                self.count += 1
                print()

if __name__ == "__main__":
    jdt = Jdt()
    jdt.jindutiao()

读取文件中大写字母的个数

class HWH(object):
    def __init__(self,path):
        count = 0
        self.path = path
        self.count = count
    def read(self):
        with open(self.path,mode='r') as f:
            lines = f.readlines()
            for line in lines:
                new_line = line.strip('\n')
                for i in new_line:
                    if i.isupper():
                        self.count += 1
        print('大写字母数量为:%d'%self.count)

if __name__ == "__main__":
    path = 'C:/Users/侯文涵/Desktop/test.txt'
    hwh = HWH(path)
    hwh.read()

类中传参

class HWH(object):
    def __init__(self,num):
        self.a = num
        print(self.a)

if __name__ == "__main__":
    hwh = HWH(10)    

私有变量,私有函数

class class_name:
    def __init__(self):
        self.__a = 1000

    def A(self):
        print(self.__a)
        print(self.__B())

    def __B(self):
        print('Hello B ')


if __name__ == "__main__":
    name = class_name()
    name.A()
    #print(name.__a)  #私有变量不可外部调用
    #print(name.__B())

面向对象进阶

@property装饰器

class Person(object):
    #使用装饰器,需要注意:
    #1.装饰器名,函数名需要一致。
    #2.property需要先声明,再写setter,顺序不能倒过来
    #3.如果你希望一点变量只是被访问不能被修改,那么可以使用访问器@property
    #4.如果要修改访问器中的变量,可以搭建一个修改器,或者删除访问器

    def __init__(self, name, age):
        self._name = name
        self._age = age

    # 访问器 - getter方法
    @property
    def name(self):
        return self._name

    # 访问器 - getter方法
    @property
    def age(self):
        return self._age

    # 修改器 - setter方法
    @age.setter
    def age(self, age):
        self._age = age

    def play(self):
        if self._age <= 16:
            print('%s正在玩飞行棋.' % self._name)
        else:
            print('%s正在玩斗地主.' % self._name)


def main():
    person = Person('王大锤', 12)
    person.play()
    person.age = 22
    person.play()
    # person.name = '白元芳'  # AttributeError: can't set attribute


if __name__ == '__main__':
    main()

单继承

#单继承
class A(object):
    def __init__(self,a1):
        self.a = 1000
        self.a1 = a1
    def A1(self):
        print('A1')

class B(A):
    def __init__(self,a1):      
        A.__init__(self,a1)       #!!!!!!
        pass
    def B1(self):
        print(self.a1)

if __name__ == "__main__":
    b = B('hwh')
    b.B1()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值