ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

面向对象

2021-11-30 19:33:01  阅读:121  来源: 互联网

标签:name self sex 面向对象 my age def


面向对象:
1、类的定义使用的关键字是class
2、类的首字母必须是大写
3、目前学习的类都是新式类,python2经典类
4、所有类的基类(祖先)都是object,因此都是需要来继承的
5、面向对象的三大特性:
封装 让我们调用的属性隐藏内部实现的数据
继承
多态
6、在OOP的编程中,如果要调用类里面的方法,首先要对类进行实例化,
实例化后的对象可以调用类中的方法
数据属性可以理解为类里面的全局变量它是属于类
实例属性可以理解为类里面的局部变量,它是属于对象
7、类的数据属性是针对所有对象共享的,也就是说针对一个类进行实例化后的对象,调用数据属性,它的内存地址都
是一样的
8、当一个方法我们只想获取它的值并且这个方法里面不需要形式参数的时候,那么这个方法我们可以定义成特性方法
class Person(object):    object新式类,可写可不写单一般标明
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def show(self):
        print('my name is {0},my age is {1},my sex is {2}'.format(
            self.name,self.age,self.sex))
obj=Person(name='chenli',age=23,sex='boy')     对类进行实例化obj是它的对象
obj.show()    调用类的方法

 调用name

class Person(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def getName(self):
        return self.name


    def show(self):
        print('my name is {0},my age is {1},my sex is {2}'.format(
            self.name,self.age,self.sex))
obj=Person(name='chenli',age=23,sex='boy')
print(obj.getName())
obj.show()

得到结果:

chenli
my name is chenli,my age is 23,my sex is boy

更改name=xiaoqi

class Person(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def getName(self):
        return self.name

    def setName(self,name):
        self.name=name

    def show(self):
        print('my name is {0},my age is {1},my sex is {2}'.format(
            self.name,self.age,self.sex))
obj=Person(name='chenli',age=23,sex='boy')
obj.setName(name='xiaoqi')
print(obj.getName())
obj.show()

得到结果为:

xiaoqi
my name is xiaoqi,my age is 23,my sex is boy

特殊方法

class Person(object):
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def getName(self):
        return self.name

    def setName(self,name):
        self.name=name
#特殊方法
    @property
    def getNameAge(self):
        return 'my name is {0},my age is {1}'.format(self.name, self.age)

obj=Person(name='chenli',age=23,sex='boy')
print(obj.getNameAge)
class Person(object):
    country='china'
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

    def getName(self):
        return self.name

    def setName(self,name):
        self.name=name

# 普通方法
    def show(self):
        print('my name is {0},my age is {1},my sex is {2}'.format(
            self.name,self.age,self.sex))


#特殊方法
    @property
    def getNameAge(self):
        return 'my name is {0},my age is {1}'.format(self.name, self.age)

obj1=Person(name='chenli',age=23,sex='boy')
obj2=Person(name='xiaoqi',age=1,sex='boy')
print(id(obj1.country))
print(id(obj2.country))

可以得到obj1和obj2中country属性的内存地址是一致的

 

继承

java和Python的继承有什么区别
Java是单继承的,Python是多继承的(可以继承多个类)
所有类的基类都是object
基类(父类)被继承的类
派生类(子类)继承其他的类
super().__init__(xingge)
father(xingge).__init__(self)
方法重写:当子类的方法与父类的方法名一致的时候,就说子类重写了父类的方法
目的:父类的方法无法满足子类的诉求
class father(object):

    country='chinese'

    def __init__(self,xingge):
        self.xingge=xingge

    def show(self):
        print('性格是温和的')

class son(father):
    def __init__(self,xingge,hobby):
        self.hobby=hobby
        super().__init__(xingge)     son类继承了father类的方法,

    def show(self):
        print('我的性格是:{0},我的爱好是:{1}'.format(self.xingge,self.hobby))

obj=son(xingge='温和',hobby='read')
obj.show()
print(obj.country)

得到结果:

我的性格是:温和,我的爱好是:read
chinese

继承的原则:

继承第一原则:
约束条件:从上到下原则的前提是类没有重写父类的方法
继承第二原则:
约束条件:从下到上原则的前提是类重写父类的方法


标签:name,self,sex,面向对象,my,age,def
来源: https://www.cnblogs.com/chenli1/p/15625173.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有