欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 面向对象