类,继承

 面向过程:C语言
'''
什么是面向对象?
所谓面向对象,其实就是说:站在上帝的视角下,世界万物一切皆对象。把拥有共同的属性归为一类,这就是class的由来

类的定义:
关键字:class
for examole:
类的名称首字母必须是大写的
类里面有那些东西?
1、属性
2、方法(其实就是之前学习过的函数)
类里面的属性以及方法,调用的前提是首先要对类进行实例化处理
for example:
def show():
print('hello')
show()
# object是所有类的父类,可以说是类的祖先
class Person (object):
city='西安'
# 数据属性--->只能通过类名或者类的对象来调用

# init:初始化
# 构造方法:针对类初始类的时候必须要对改造方法里面的实例属性赋值
def __init__(self,name='段舒元',age=18):
# 实例属性的过程
self.name=name
self.age=age
print('初始化')

 # self指的是类本身自己
def show(self):
print('my name is {0},and my age is {1},city is {2}'.format(self.name,self.age,self.city))


def method(self,*args,**kwargs):
print(kwargs)
# 析构方法,价值:清理
def __del__(self):
print('清理')

 

 

 

 
调用方法执行顺序:
1,执行构造方法
2、执行真正调用的方法
3、执行析构方法

'''
·

'''
obj:
1、它是一个变量
2、它是类的对象


# 把类进行实例化的过程中会必须调用__init__方法
# obj=Person(name='段舒元',age=18)
#
# obj.method(address="中国西安",country="中国")
# obj.info()
# obj.show()
#对数据属性而言,使用类以及类对象调用,它的内存地址都是一致的
# print(id(Person.city))
# print(id(obj.city))

# obj1=Person(name='段舒元',age=18)
# obj2=Person(name='赵四',age=50)
# obj1.show()
# obj2.show()

 

 



方法(method):
1、普遍方法,如show(),info()
2、特性方法,只具备只读写,不能写(这个方法里面不能有形势参数)
因为调用特性方法的时候,没有括号
3、静态方法:理解为全局变量,但是不能等价与全局变量,静态方法的特点是使用类名来直接调用


特性方法

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

@property#装饰器
def getInfo(self):
print('我的姓名:{0},我的年龄:{1}'.format(self.name,self.age))
obj1=Person(name='段舒元',age=18)
obj1.getInfo



 


 



静态方法



def show():
print('hello')
show()
class Person (object):
city='西安'


def __init__(self,name='段舒元',age=18):

self.name=name
self.age=age
print('初始化')




def show(self):
print('my name is {0},and my age is {1},city is {2}'.format(self.name,self.age,self.city))
def info (self,sex='男'):
print('我的性别是:{0},and my age is {1},and my name is {2},and city is {3}'.format(sex,self.age,self.name,self.getName()))

def method(self,*args,**kwargs):
print(kwargs)
def __del__(self):
print('清理')
obj1=Person(name='段舒元',age=18)
obj1.show()

@staticmethod
def getName():
return "中国西安"
obj1=Person(name='段舒元',age=18)
obj1.info()
print(Person(name='',age='').getName())

 

 

什么是类,什么是对象

——init——:初始化

——del——:清理

方法执行顺序:

1、初始化

2、输出内容

3、清理

 

普通方法

特性方法

静态方法

 

 

封装

继承

多态



继承

java与Python的基承区别:
1、Python是一个类可以基承N个类
2、Java只能继承一个类

概念:
1、基类(父类):被继承的类
2、派生类(子类):继承其他的类
子类继承父类,继承了什么?
1、数据属性
2、实例属性
3、方法
class Animal(object):

address='地球'

def __init__(self,name,age):
self.name=name
self.age=age

def show (self):
return 'name is {0},age is {1}'.format(self.name,self.age)
class Person(Animal):
def __init__(self,name,age,work):

# 子类继承父类的实例属性
# super().__init__(name,age)
Animal.__init__(self,name,age)
self.work=work
def info(self):
print('来自{0},信息{1}'.format(self.address,self.show()))
obj=Person(name='段舒元',age=18,work='测试')
obj.info()


 

 


继承的原则:
1、从左到右()
2从下到上 前提条件:子类重写了父类的方法,那么调用父类以及子类共同拥有的方法的时候,优秀调用子类自己的方法
'''
class Animal(object):

address='地球'

def __init__(self,name,age):
self.name=name
self.age=age

def show (self):
return 'name is {0},age is {1}'.format(self.name,self.age)
class Person(Animal):
def __init__(self,name,age,work):


super().__init__(name,age)
Animal.__init__(self,name,age)
self.work=work
def info(self):
print('来自{0},信息{1}'.format(self.address,self.show()))
def show(self):
print('我是Person里面的方法')
obj=Person(name='段舒元',age=18,work='测试')
obj.show()

 

 错误的事列


# class XianCity(Anima,Person):
# def __init__(self,name,age,work,rjm):
# Animal.__init__(self,name,age)
# Person.__init__(self,work)
# self.rjm=rjm
# xianObj=XianCity(name='',age='',work='',rjm='b')
# # 被继承的必须是平等的,比如儿子继承了爸爸的不能继承爷爷的

 

 

 




 

 
posted @ 2022-04-01 20:37  段舒元  阅读(39)  评论(0编辑  收藏  举报