-
什么是面向对象编程
程序设计的范式
抽象并建立对象模型
程序是不同对象相互调用的逻辑
查看全部 -
Python进阶课程学习内容:
面向对象编程
类的继承
类的特殊方法
Python模块
Python文件编程
Python网络编程
函数式编程
查看全部 -
在实际工程中,close()文件之前,为了正确关闭文件,需要考虑各种异常情况,这是非常麻烦的一件事,Python提供with关键字,可以免除这类后顾之忧。
with关键字对资源进行访问的场合,会确保不管在使用过程中是否发生异常,都会执行必要的“清理”的操作,释放资源,比如文件使用后自动关闭等等。查看全部 -
使用a的打开方式打开文件,文件游标默认是在文件的尾部,因此,可以便捷的往文件尾部添加内容,除此以外,文件对象还提供seek()方法,可以移动文件的游标位置,它接受一个参数,表示文件的位置,0:文件首部,1:当前位置,2:文件尾部,通过seek()可以把文件游标移动到文件首部但不删除文件的内容。查看全部
-
因此,通过input()函数,则可以改变上面程序运行的范围,注意:输入的是字符串,需要转型为数字类型。查看全部
-
f = open('test.txt','r') lines = f.readlines() f1 = open('test1.txt','w') for line in lines: line = line[::-1] line = line[1:] f1.write(line+'\n') print(line) f1.close() f.close()
Line6和Line7作用去除反转后开头的'\n'、在结尾追加\n
查看全部 -
# Enter a code
class Person(object):
def __init__(self,name,gender):
self.name = name
self.gender = gender
class SkillMixin(object):
def __init__(self,skill):
self.skill = skill
class Student(Person):
def __init__(self,name,gender,score):
super(Student,self).__init__(name,gender)
self.score = score
class Tercher(Person):
def __init__(self,name,gender,course):
super(Tercher,self).__init__(name,gender)
self.course = course
class BasketballMixin(SkillMixin):
def skill(self):
return 'Skill is basketball'
class FootballMixin(SkillMixin):
def skill(self):
return 'Skill is football'
class BStudent(Student,BasketballMixin):
def __init__(self,name,gender,score = 0):
super(BStudent,self).__init__(name,gender,score)
class FTercher(Tercher,FootballMixin):
def __init__(self,name,gender,course = ' '):
super(FTercher,self).__init__(name,gender,course)
s = BStudent('Bob','Male')
print('Studen\'s name is {}, Gender is {}, Skill is {}.'.format(s.name, s.gender ,s.skill()))
t = FTercher('Alice','Female')
print('Tercher\'s name is {}, Gender is {}, Skill is {}.'.format(t.name, t.gender ,t.skill()))
Line27、Line30 不知道super()能不能不从父类全部继承?
查看全部 -
通过函数isinstance()可以判断一个变量的类型。
在继承链上,一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。
一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。查看全部 -
定义父类
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
定义子类
class Student(Person):
def __init__(self,name,age,score):
Person.__init__(self,name,age) 必须显示调用父类构造方法
self.score = score
查看全部 -
类方法需要使用@classmethod来标记为类方法,否则定义的还是实例方法
类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.__localtion 实际上相当于Animal.__localtion。
因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。查看全部 -
私有属性没有办法从外部访问,只能在类的内部操作;那如果外部需要操作私有属性怎么办?这个时候可以通过定义类或者实例的方法来操作私有属性
实例的方法指的就是在类中定义的函数,实例方法的第一个参数永远都是self,self是一个引用,指向调用该方法的实例对象本身,除此以外,其他参数和普通函数是完全一样的。查看全部 -
类属性和实例属性同时存在的情况下,实例属性的优先级是要高于类属性的,在操作实例的时候,优先是操作实例的属性。
当实例没有和类同名的时候,通过实例对象,依然可以访问到类属性。
通过实例是无法修改类的属性的,事实上,通过实例方法修改类属性,只是给实例绑定了一个对应的实例属性查看全部 -
通过实例是无法修改类的属性的,事实上,通过实例方法修改类属性,只是给实例绑定了一个对应的实例属性:
因此,需要特别注意,尽量不要通过实例来修改类属性,否则很容易引发意想不到的错误。查看全部 -
在类属性和实例属性同时存在的情况下,实例属性的优先级是要高于类属性的,在操作实例的时候,优先是操作实例的属性。
另外,当实例没有和类同名的时候,通过实例对象,依然可以访问到类属性。查看全部 -
私有属性是以双下划线'__'开头的属性。
# 类私有属性
class Animal(object):
__localtion = 'Asia'
print(Animal.__localtion)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: type object 'Animal' has no attribute '__localtion'查看全部
举报