Python015面向对象之类和对象

Python015面向对象之类和对象


记得第一次听说面向对象时,觉得很高大上,那时完全不懂什么是面向对象。上大二之前,用的编程思想是面向过程的,那时候还问过老师什么是面向对象,当时老师也是回答的很笼统,并没有听懂什么是面向对象。经过多年开发后,对面向对象有了更加全面的认识。面向对象究竟是什么,感觉并不能解释它的精髓,只可意会不可言传。

现在在我看来,面向对象,是一种代码折叠的技术,把相关功能的数据和函数打包到一起形成对象。对于单线程程序,肯定是顺序执行的,无论我们用的是面向对象的方式还是用面向过程的方式来开发这个程序的。一般情况下,我们总是把业务中的一些事物抽象成一个类,每一个事物拥有一定的功能,这个过程是把相关的数据和功能打包。

对于简短的小程序来说,面向对象没有任何优势可言。对于计算机来说,顺序执行的方式显得很自然。面向对象花费了许多心思让代码折叠起来,必然会有多余的操作,性能上比不过面向过程程序。定义了一些类,代码长度上可能也比面向过程长,理解难度也会大于面向过程。

但是,对于一个很大的工程而言,面向对象的优势就凸显了出来。曾见过比尔这样说:短代码用面向过程很容易实现,一旦代码的量超过1万行,普通人就很难驾驭了,再长一些就突破了人的脑容量。我没有写过这么长的面向过程程序,这句话的真伪有待验证。面向对象把有一定功能的任务组织成类,项目是由许多类组成,开发人员只需要了解其中一些类的用法即可。面向对象程序还有很好扩展性,比面向过程程序更加容易维护。这些优越的特性只是牺牲了微不足道的性能,增加了代码的行数,还是很划算的。

类是模版,对象是通过模版创造出来的一组数据和函数的集合。

说了这么多,你肯定还是不明白什么是面向对象。但是我向你保证,只要你经常使用类和对象的方式来组织代码,很快就会明白面向对象是什么,有什么好处。

面向对象中还有一些专有名词:

类:模版

对象:通过类创建出来具有一定的功能的数据(属性)和函数(方法)的集合

属性:对象中的变量,用于存储对象的数据。一般情况下随着类的创建而创建,随着类的消亡而消亡,与类同生共死

方法:对象的函数,可以使用对象的数据,表示对象的行为。


------------------------------------------------------------------------------------------------------------------------------



类的定义方法如下:


class ClassName:

def __init__(self,var1,...,varX):

self.p1="123";

...

self.pY=[1,2,3,4,5];

...


def funcion1(self,var1,...,varP):

...

... ...

def functionN(self,var1,...,varQ):

...

这里需要解释一下这个函数def __init__(self,var1,...,varX)

以双下划线开头并且以双下划线结尾的函数在Python中叫做魔法方法,这些方法有一些特殊功能,并且一般情况下,不需要我们手动调用。魔法方法还有许多,这里只解释__init__和__str__其他自己去搜吧。

__init__

创建对象时调用,一般用于定义属性(变量),并初始化这些属性(变量)的值

__str__

当对象需要以字符串形式返回的时候,可以在这里写对象对应的字符串



使用类创建对象的方法如下:


1.创建对象

a=ClassName(var1,...varX);

2.调用对象方法

a.funcion1(var1,...,varP);

...

a.functionN(var1,...,varQ);

3.调用对象属性

print(a.p1);#"123"



下面是定义了一个Dog类:


class Dog:
    def __init__(self,name="",color="红色",weight=1,age=0,phrase="汪汪汪!"):
        self.__eyeNum=2;#私有属性,类外不能访问
        self.__legNum=4;#私有属性,类外不能访问
        self.color=color;
        self.name=name;
        self.weight=weight;
        self.age=age;
        self.phrase=phrase;
    def __str__(self):
        return "名字:"+self.name+"    颜色:"+self.color;
    
    def cry(self):
        print(self.name+":"+self.phrase);
        
    def setName(self,name):
        self.name=name;
        
    def setColor(self,color):
        self.color=color;
        
    def setPhrase(self,phrase):
        self.phrase=phrase;
############################Dog Class End###################################



下面是对Dog类的调用:


a=Dog();
a.setName("大黄");
a.cry();#大黄:汪汪汪!
print(a);#名字:大黄    颜色:红色

print("\n"+"*"*30+"\n");#******************************

b=Dog("欧阳疯");
b.setColor("装逼色");
b.setPhrase("吾乃庐陵欧阳疯,汪汪汪!!!!");
b.cry();#欧阳疯:吾乃庐陵欧阳疯,汪汪汪!!!!
print(b);#名字:欧阳疯    颜色:装逼色


print(b.age);#0 普通属性,可以访问
print(b.__legNum);#AttributeError: 'Dog' object has no attribute '__legNum'  私有属性,类外不能访问

#python中以双下划线开头的属性和方法都是私有的,不能在类外访问




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python面向对象编程是一种编程范式,它将数据和操作数据的方法组合在一起,形成一个对象。类是面向对象编程的基本概念,它是一种用户自定义的数据类型,可以包含属性和方法。属性是类的特征,方法是类的行为。类可以被实例化为对象,每个对象都有自己的属性和方法。在Python中,使用class关键字定义类,使用对象.属性或对象.方法的方式来访问类的属性和方法。面向对象编程 ### 回答2: Python是一种非常流行的编程语言,因为它有着非常丰富的库和工具,并且易于学习和使用。Python支持面向对象编程,其面向对象编程的特点包括:封装、继承和多态。面向对象编程可以将一个复杂问题分解为不同的对象和类,每个对象和类都有自己的属性和方法,它们之间互相作用,共同解决问题。 在Python中,通过“class”关键字定义类,类中包含了一些变量和方法,而这些变量和方法都可以通过创建类的实例来访问。例如: ``` class MyClass: def __init__(self, name): self.name = name def say_hello(self): print("Hello, " + self.name + "!") ``` 在上面的代码中,我们定义了一个名为“MyClass”的类,它有一个名为“name”的属性和一个名为“say_hello”的方法。其中,“__init__”方法是一个特殊的方法,在创建实例时会被调用,用于初始化实例的属性。 要使用这个类,我们需要创建它的一个实例: ``` my_object = MyClass("World") my_object.say_hello() # 输出:Hello, World! ``` 在上面的代码中,我们创建了一个名为“my_object”的实例,它的“name”属性被设置为“World”,然后我们调用了“say_hello”方法来打印一条问候语。 除了定义类和创建实例外,还可以使用继承来扩展现有类。例如: ``` class MyChildClass(MyClass): def say_goodbye(self): print("Goodbye, " + self.name + "!") ``` 在上面的代码中,我们创建了一个名为“MyChildClass”的子类,它继承了“MyClass”的所有属性和方法,并添加了一个名为“say_goodbye”的方法。 当我们创建一个“MyChildClass”的实例时,它同样具有“name”属性和“say_hello”方法。此外,因为它继承了“MyClass”,我们还可以调用“say_hello”方法。例如: ``` my_child_object = MyChildClass("Universe") my_child_object.say_hello() # 输出:Hello, Universe! my_child_object.say_goodbye() # 输出:Goodbye, Universe! ``` 在上面的代码中,我们创建了一个名为“my_child_object”的实例,它的“name”属性被设置为“Universe”。我们首先调用了“say_hello”方法,然后调用了“say_goodbye”方法,它是“MyChildClass”的独有方法。 总的来说,面向对象编程可以帮助我们在编写复杂的应用程序时更好地组织代码,使其更易于维护和扩展。在Python中,实现面向对象编程非常简单,只需要定义类、创建实例和使用继承即可。通过有意义地利用面向对象编程的特点,我们可以更加高效地编写Python应用程序。 ### 回答3: Python是一种面向对象的编程语言,它支持类、对象、继承、封装、多态等面向对象编程的基本特点。在Python中,类是一组代码的抽象,一个类可以包含多个方法和属性,实例化之后可以创建对象。类的定义使用关键字class来声明,示例代码如下: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print("Hello, my name is {} and I'm {} years old.".format(self.name, self.age)) ``` 这个例子定义了一个Person类,其中包含了一个构造函数和一个say_hello方法。构造函数用来初始化对象的属性,它的第一个参数是self,代表当前对象。say_hello方法打印出对象的属性。 创建对象的时候,需要通过类名调用构造函数,示例代码如下: ```python person = Person("Alice", 20) person.say_hello() # Hello, my name is Alice and I'm 20 years old. ``` 这个例子创建了一个名为person的对象,它的name属性为"Alice",age属性为20。调用say_hello方法后,输出了一段问候语。 在Python中,继承是一种重要的特性,它允许一个类继承另一个类的属性和方法。示例代码如下: ```python class Student(Person): def __init__(self, name, age, grade): super().__init__(name, age) self.grade = grade def say_hello(self): print("Hello, my name is {} and I'm a student in grade {}.".format(self.name, self.grade)) ``` 这个例子定义了一个Student类,它继承自Person类,拥有Person类的所有属性和方法。同时,它还定义了一个grade属性和一个重写了say_hello方法。 创建Student对象的时候,需要调用Student类的构造函数,示例代码如下: ```python student = Student("Bob", 18, 12) student.say_hello() # Hello, my name is Bob and I'm a student in grade 12. ``` 这个例子创建了一个名为student的对象,它的name属性为"Bob",age属性为18,grade属性为12。调用say_hello方法后,输出了一段问候语。 封装是面向对象编程的另一个重要特性,它允许将数据和代码包装在一起,只暴露需要对外公开的接口。在Python中,可以使用属性来实现封装。示例代码如下: ```python class Animal: def __init__(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, value): self._name = value ``` 这个例子定义了一个Animal类,它有一个name属性,通过@property装饰器将name属性设置为只读属性,通过@name.setter装饰器将name属性设置为可写属性,这样外部代码只能通过对象的接口来读写对象的属性。 多态是面向对象编程的另一个重要特性,它允许一个对象在不同情况下表现出不同的行为。在Python中,多态可以通过继承和方法重写来实现。示例代码如下: ```python class Shape: def draw(self): pass class Rectangle(Shape): def draw(self): print("Drawing a rectangle") class Circle(Shape): def draw(self): print("Drawing a circle") ``` 这个例子定义了一个Shape类和两个继承自Shape类的子类Rectangle和Circle。这三个类都有一个draw方法,但它们的行为不同。创建Rectangle和Circle对象后,可以调用它们的draw方法来观察它们的行为。 这篇文章介绍了Python面向对象编程的基本概念和用法,包括类、对象、继承、封装、多态等特性。面向对象编程是一种非常重要的编程范式,它让代码更加清晰、易于扩展和维护。希望读者可以通过这篇文章了解Python面向对象编程的基础知识,并在实践中运用它们。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值