python面向对象设计两个类_Python 面向对象程序设计之类与对象

类是一种广义的数据类型,这种数据类型中的元素既包含数据,也包含操作数据的函数。而对象是具有这种数据类型的变量。类是抽象的,不占用内存空间,而对象是具体的,占用存储空间。定义对象后系统为对象变量分配内存空间。

用我的话来讲,你看那个每次编程的开头from。举个栗子,就像我们开头使用的import os。os就是一个类。delay = os.popen("ping -n 1 -w 4000 1.197.204.132" )。os. popen就是一个类的函数(方法),delay就是一个实例化的对象。

类的定义

在Python中,通过class关键字来定义类

class 类名:

类体

类头由关键字class开头,后面跟类名。

类体定义类的内容。一是类的属性;二是类的方法。

当一个类定义完之后,产生一个类对象。类对象支持两种操作:引用和实例化。引用操作是通过类对象去调用类中的属性和或方法,而实例化是产生一个类对象的实例,称作实例对象。

1._init_(self,..)是类初始化构造方法

下面这个例子中的def __init__(self,name,score)用参数name和score进行初始化。self作为第一个参数表示对象自身

2.类方法@classmethod,通过实例对象与类对象访问。实例方法则是类中最常用最定义的成员方法。静态方法@staticmethod,不需要定义参数

3.私有属性

类与对象具体例子

# -*- coding: utf-8 -*-

"""Created on Sun Jul 28 19:24:41 2019@author: Administrator"""

class Student:

#定义类的属性

name='koro'

__age=18 #age是私有属性,不能再类外通过对象访问私有属性

gender='female'

#定义类的方法(函数)

def __init__(self,name,score): #__init__定义了是实例属性,__init__构造函数时,具有初始化作用,当该类被实例化是就执行函数。

self.name=name

self.score=score

def print_score(self): #实例方法,一般以self作为第一个参数

print('{}:{}'.format(self.name,self.score))

@classmethod #类方法的开头

def getName(cls): #类方法第一个参数一般是cls(类对象)

return cls.name

@staticmethod #静态方法不需要额外参数

def getGender():

return Student.gender

#对象名.属性名 对象名.函数名()

#这些是实例对象

brenden=Student('Brenden:',59) #创建实例化对象 对象名=类名(参数

brenden.print_score() #实例对象的方法

print(brenden.name) #对象的属性

lucy=Student('Lucy',87)

lucy.print_score()

print(brenden.getName())#通过实例对象引用

print(Student.getName())#通过类对象引用

print(Student.getGender())

print(Student.name,'\n') #Student是类对象

以下是这个程序的结果

Brenden: : 59

Brenden:

Lucy : 87

koro

koro

female

koro

类的继承与多态

1.继承指一个新类从已有的类那里获得其已有的特性。

类继承分为单继承与多重继承。

单继承的定义形式入下:class 子类名(父类名):

多重继承一般定义形式:class 子类名(父类1,父类2......):,此方法有一定的规则

例如(单继承)

# -*- coding: utf-8 -*-

"""Created on Sun Jul 28 23:01:53 2019@author: Administrator"""

#子类继承父类的所有公有属性和方法,可以在子类中通过父类名来调用,不继承私有

#在python中,如果父类和子类都重新定义了构造方法__init__,在进行子类实例化的时候,子类的

#构造方法不会自动调用父类的构造方法,必须在子类中显示调用。父类名.方法

class UM:

def __init__(self,name,age):

self.name=name

self.age=age

print('Init UM:',self.name)

def tell(self):

print('Name:{};age:{}'.format(self.name,self.age))

class St(UM):

def __init__(self,name,age,marks):

UM.__init__(self,name,age) #显示调用父类构造方法

self.marks=marks

print('Init Student:',self.name)

def tell(self):

UM.tell(self)

print('Marks:',self.marks)

class Te(UM):

def __init__(self,name,age,salary):

UM.__init__(self,name,age)

self.salary=salary

print('Init Teacher:',self.name)

def tell(self):

UM.tell(self)

print('Salary:',self.salary)

class God(UM):

#def __init__(self,name,age):

#UM.__init__(self,name,age)

#def announce(self):

# print('I')

pass

B=St('Bruce',18,80)

L=Te('Lucy',30,10000)

C=God('Jesus','???')

members=[B,L]

for member in members:

member.tell()

以下是结果

Init UM: Bruce

Init Student: Bruce

Init UM: Lucy

Init Teacher: Lucy

Init UM: Jesus

Name:Bruce;age:18

Marks: 80

Name:Lucy;age:30

Salary: 10000

多重继承的特殊例子,大家可以自己分析

#这里采用的是深度搜索规则,从左到右深度优先

class A():

def foo1(self):

print("A")

class B(A):

def foo2(self):

print('B')

class C(A):

def foo1(self):

print('C')

class D(B,C):

pass

d=D()

d.foo1()

2.多态即多种形态,是指不同的对象收到同一种消息时会产生不同的行为。例如内置函数len(),len函数不仅可以计算字符串的长度没还可以计算列表、元组等对象中的数据个数。这正是一种多态的表现。

总结:还是要多分析程序呀。Python编程内容之广泛....多多加油与实践,不忘初心,方得始终。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python是一种面向对象的编程语言,因此面向对象编程是Python的核心编程方法之一。面向对象编程是一种编程模式,它通过将数据和操作数据的方法封装在一起,实现了代码的重用、可维护性、可扩展性和可靠性。 在Python中,面向对象编程的基本概念包括、对象、继承、多态等。 面向对象编程的基本概念,它是一个抽象的概念,用来描述某一对象的通用特征。定义了对象的属性和方法,是创建对象的模板。在Python中,通过class语句定义。 对象是的一个实例,它具有定义的属性和方法。通过实例化,可以创建一个对象。在Python中,对象可以通过名后跟一对括号来创建。 继承是一种面向对象编程的重要特性,它允许子继承属性和方法,并且可以重写或添加新的属性和方法。在Python中,可以使用继承来创建一个新的。 多态是指不同的对象可以使用相同的方法名来调用不同的方法,这种特性使得代码更加灵活。在Python中,多态可以通过继承和方法重载来实现。 下面是一个简单的Python的例子: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is", self.name) person1 = Person("Tom", 20) person1.say_hello() ``` 这个例子定义了一个Person,它有两个属性:name和age,以及一个方法say_hello。通过实例化Person,可以创建一个名为person1的对象,并调用say_hello方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值