python面向对象基础知识学习
程序员文章站
2022-07-10 09:43:12
...
python面向对象基础知识学习
请参看慕课网视频:https://www.imooc.com/learn/747
我已经看过了,免费的,很基础,看完之后,需要自己消化学习
3-1 用Python定义类对应的代码实例:
class Newstyle(object):
def __init__(self,name,description):
self.name = name
self.description = description
if __name__ == '__main__':
new = Newstyle('new','New style class python 工程师')
print(new)
print(type(new))
print(dir(new))
3-2 Python面向对象-定义类的属性 对应的代码实例:
class Programer(object):
hobby = 'Study Python Class'
def __init__(self,name,age,weight):
self.name = name #公有属性
self._age = age #私有属性,可同对象不同类内访问
self.__weight = weight #私有属性,可同对象同类内访问
def get_weight(self):
return self.__weight
if __name__ == '__main__':
programer = Programer('Lucky','4.5','100cm') #对象实例化
print(dir(programer)) #打印对象属性
print(programer.__dict__) #打印对象中构造函数的属性
print(programer.get_weight()) #获取构造函数weight值
print(programer._Programer__weight) #获取构造函数weight值
3-3 Python面向对象-定义类的方法 对应的代码实例:
#常用的方法定义
class Example(object):
def add(self): #公有方法
pass
def _minus(self): #私有方法
pass
def __multiply(self):#私有方法
pass
#实例
class Programer(object):
hobby = 'Study Python Class'
def __init__(self,name,age,weight):
self.name = name #公有属性
self._age = age #私有属性,可同对象不同类内访问
self.__weight = weight #私有属性,可同对象同类内访问
@classmethod #调用时用类名,而不是某个对象,装饰器
def get_hobby(cls):
return cls.hobby
@property #像访问属性一样调用方法,装饰器
def get_weight(self):
return self.__weight
def self_introduction(self):
print ('My cat Name is %s \nIt is %s years old \n'%(self.name,self._age))
if __name__ == '__main__':
programer = Programer('Lucky','4.5','100cm') #对象实例化
print(dir(programer)) #打印对象属性
print(Programer.get_hobby()) #调用时用类名
#print(programer.__dict__) #打印对象中构造函数的属性
print(programer.get_weight) #获取构造函数weight值,访问方法,不需要括号()
#print(programer._Programer__weight) #获取构造函数weight值
programer.self_introduction()
3-4 Python面向对象-类的继承对应的代码实例:
#用super()调用父类的方法
class A(object):
def method(self,arg):
pass
class B(A):
def method(self,arg):
super(B,self).method(arg)
#用类名调用父类的方法
class A(object):
def method(self,arg):
pass
class B(A):
def method(self,arg):
A.method(arg)
#子类的类型判断
#isinstance 判断类型
#issubclass 判断是否子类
#实例
class Programer(object):
hobby = 'Study Python Class'
def __init__(self,name,age,weight):
self.name = name #公有属性
self._age = age #私有属性,可同对象不同类内访问
self.__weight = weight #私有属性,可同对象同类内访问
@classmethod #调用时用类名,而不是某个对象,装饰器
def get_hobby(cls):
return cls.hobby
@property #像访问属性一样调用方法,装饰器
def get_weight(self):
return self.__weight
def self_introduction(self):
print ('My cat Name is %s \nIt is %s years old \n'%(self.name,self._age))
class BackendProgramer(Programer):
def __init__(self,name,age,weight,language):
super(BackendProgramer,self).__init__(name,age,weight)
self.language = language
if __name__ == '__main__':
#programer = Programer('Lucky','4.5','100cm') #对象实例化
programer = BackendProgramer('Lucky','4.5','100cm','Cat self Language')
print(dir(programer)) #打印对象属性
#print(Programer.get_hobby()) #调用时用类名
print(programer.__dict__) #打印对象中构造函数的属性
print(type(programer)) #打印类的种类
print(isinstance(programer,Programer)) # 判断programer这个类的父类是不是Programer
3-5 类的多态对应的代码实例:
#多态要素
#1.继承;2.方法重写
#实例
class Programer(object):
hobby = 'Study Python Class'
def __init__(self,name,age,weight):
self.name = name #公有属性
self._age = age #私有属性,可同对象不同类内访问
self.__weight = weight #私有属性,可同对象同类内访问
@classmethod #调用时用类名,而不是某个对象,装饰器
def get_hobby(cls):
return cls.hobby
@property #像访问属性一样调用方法,装饰器
def get_weight(self):
return self.__weight
def self_introduction(self):
print ('My cat Name is %s \nIt is %s years old \n'%(self.name,self._age))
class BackendProgramer(Programer):
def __init__(self,name,age,weight,language):
super(BackendProgramer,self).__init__(name,age,weight)
self.language = language
def self_introduction(self):
print ('My cat Name is %s \nIts favorite language is %s \n'%(self.name,self.language))
def introduce(programer):
if isinstance(programer,Programer):#判断programer是否为Programer的子类,是则打印BackendProgramer中self_introduction
programer.self_introduction()
if __name__ == '__main__':
programer = Programer('Lucy','25','160cm') #对象实例化
backend_programer = BackendProgramer('Lucky','4.5','100cm','Cat self Language')
introduce(programer)
introduce(backend_programer)
#print(dir(programer)) #打印对象属性
print(Programer.get_hobby()) #调用时用类名
上一篇: Python 模块和模块的常用方法
下一篇: DNS服务器搭建