Python Day 04

面向对象编程基础
1.类和对象
定义类:

# 标识  类名     object
class class_name(object):#class_name是类名
	def __init__(self):
		self.a = 100
	def A(self):
		print(self.a)
if __name__ == "__main__":
	a = class_name()#相当于走初始化__init__
	a.A()#在类中调用使用

2.创建和使用对象
定义好类之后,创建对象并调用
例1 写一个进度条 ,每5%输出一个#键

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

例2:一行输出进度条

import time
class A(object):
	def jdt():
		for i in range(100):
		    time.sleep(1)
		    print ('%s %d %%\r'%('#'*(i+1),i+1),end="",flush = True)
if __name__ == "__main__":
	a = A()
	a.jdt()

例3 读写文件并查看文件中有多少个大写字母

class dx(object):
    def __init__(self):
        self.count = 0
    def zm(self):
        with open('C:\\Users\\lenovo\\Desktop\\test.txt',mode = 'r') as f:
            readlines = f.readlines()
            # print(readlines)
            for line in readlines:
                new_line = line.strip('\n')
                for i in new_line:
                    if i.isupper():
                        self.count += 1
        print(self.count)
            
if __name__ == "__main__":
    a = dx()
    a.zm()

3.访问可见性问题(就是公开和私有的问题)
如果非要使用私有变量那么可以用dir(class())去查看它真正的名字
若不是必须使用私有化,并且想体现一个变量或者函数的重要性时可以使用"_"

class test(object):
	def __init__(self,name):
		self.__name = name#__就是私有化
	def __A(self):#函数私有化
		print(self.__name)
if __name__ == "__main__":
	B = test()
	B.__A()#会报错,私有变量不可外部调用

4.面向对象三大支柱:封装,继承和多态
封装:把数据和操作封装起来,并创建一个对象,创建一个对象之后知道方法名并传入参数调用代码。
面向对象的进阶
1.@property装饰器
通过装饰器的方法来暗示属性是被保护的

class test(object):
	def __init__(self):
		self.__a = 100
	@property
	def look(self):
		return self.__a
if __name__ == "__main__":
	name = test()#实例化
	print(name.look)#此时函数变成了一个属性self.look

2.python的动态绑定
第一种:

class test(object):
	def __init__(self):
		self.__a = 100
if __name__ == "__main__":
	name = test()
	name._test__a = 50
	name.b = 10000
	print(name._test__a)
	print(name.b)#类的动态绑定

第二种:

@a.setter
def a(self,new_num):
	self.__a = new_num

3.静态方法和类方法(@staticmethod)

4.类的关系:继承就是让一个类从另一个类那里将属性和方法继承下来

class test(object):
	def __init__(self,a1):
		self.a = 100
		self.a1 = a1
	def A1(self):
		print(A1)
class B(test):
	def __init__(self,a1):
		test.__init__(self,a1)
	def B1(self):
		print(self.a1)
if __name__ == "__main__":
	b = B('lll')
	b.B1()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值