Python中类、继承的使用

知识点1:

# 创建一个“handsome”的类
class handsome:
	def __init__(self):    # 构造方法(self参数必须是第一个参数,用于访问类中的属性和方法)
		print("我是帅哥!")
Handsome = handsome()   # 创建handsome类似实例
# 运行结果
我是帅哥!

知识点2: 继承和super().init()的用法

1. 子类继承父类,但不重写构造函数__init__(初始化),那么子类会自动继承父类属性和方法

class Person:
    def __init__(self):
        self.name = "ABC"
        self.age = "24"
    def Hello(self):
        print("成功继承父类方法")

class Go(Person):
    pass

p = Person()
g = Go()

print('父类属性name: ', p.name)
print('父类属性age: ', p.name)
print('继承父类属性name: ', g.name)
print('继承父类属性age: ', g.name)
# 运行结果
父类属性name:  ABC
父类属性age:  ABC
继承父类属性name:  ABC
继承父类属性age:  ABC

2. 子类继承父类,重写构造函数__init__(初始化),但不使用super初始化父类构造函数,那么子类不会自动继承父类的属性,会继承方法

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

    def Hello(self):
        print("成功继承父类方法")

class Gao(Person):
    def __init__(self):
        self.height = 'height'

p = Person()
g = Gao()
g.Hello()
print('父类属性:', p.name)
print('父类属性:', p.age)
print('子类属性:', g.height)
print('继承父类属性:', g.age)

运行结果:Person()类里面的方法Hello()可以被继承,而Person()类里面的属性age不可以被继承:
在这里插入图片描述

3子类继承父类,重写构造函数__init__(初始化),且使用super初始化父类构造函数,那么子类会自动继承父类的属性和方法

class Person:
    def __init__(self):
        self.name = '123'
        self.age = '26'

    def Hello(self):
        print("成功继承父类方法")


class Go(Person):
    def __init__(self):
        super().__init__()
        self.height = '172cm'

p = Person()
g = Go()
g.Hello()
print('父类属性name:', p.name)
print('父类属性age:', p.age)
print('子类属性name:', g.height)
print('继承父类属性age:', g.age)
# 运行结果
成功继承父类方法
父类属性name: 123
父类属性age: 26
子类属性name: 172cm
继承父类属性age: 26

知识点2 (多参数):

// An highlighted block
var foo = 'bar';
# 创建一个“handsome”的类(方法一)
class handsome:
	def __init__(self, nane, age. score):    # 构造方法(self参数必须是第一个参数,用于访问类中的属性和方法)
		print("我是帅哥!")
		print("我叫" + nane)
		print("今年" + age)
		print("取得分数" + score)

name = "hdy"
age = "24"
score = "100"

Handsome = handsome(nanme, age, score)   # 创建handsome类似实例


# 创建一个“handsome”的类(方法二)
class handsome:
     def __init__(self, name, age, score):
         print("帅哥")
         print("我叫" + name)
         print("今年" + age)
         print("分数" + score)

if __name__ == '__main__':
    handsome = handsome(name = "hdy", age = "24", score = "100")
# 运行结果
我是帅哥!
我叫hdy
今年24
取得分数100

类知识点3:

class Person():
    def __init__(self, name = "小绿"):
        self.name = name

    def name1(self, name):
        print("1方法中的名字 %s:" %name)
        print("1类中的名字 %s :" %self.name)

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

    def Diaoyong(self, name):
        self.name1(name)

if __name__ == '__main__':
    person = Person()        # person 等值于Person()
    person.name1("A")        # person继承了Person(),并赋值name1=A,调用name1属性

    new_person = New_person("ABC")  # new_person等值于(继承Person的New_person),并引入参数ABC
    new_person.Diaoyong("b")        # new_person继承了New_person,并调用了Diaoyong属性
#运行结果
1方法中的名字 A:
1类中的名字 小绿 :
1方法中的名字 b:
1类中的名字 ABC :

定义了一个类,其内部属性可以被更改:

class Student(object):

    def __init__(self, name = "hdy", score = "59"):
        self.name = name
        self.score = score

    def print_score(self):
        print('%s: %s' % (self.name, self.score))

stu = Student("ABC", "100")
stu.print_score()
# 运行结果
ABC: 100

若要使内部属性不被外部访问和更改,可以把属性的名称前加上两个下划线:

class Student(object):

    def __init__(self, name = "hdy", score = "59"):
        self.__name = name
        self.__score = score

    def print_score(self):
        print('%s: %s' % (self.__name, self.__score))

stu = Student("ABC", "100")
print('%s:' %(stu.__name))

出现报错信息:

Traceback (most recent call last):
  File "F:/PyQt/Demo-01/lj.py", line 33, in <module>
    print('%s:' %(stu.__name))
AttributeError: 'Student' object has no attribute '__name'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,继承可以通过在定义时指定父来实现。例如,假设我们有一个父Animal: ``` class Animal: def __init__(self, name): self.name = name def make_sound(self): pass ``` 我们可以通过下面的方式来定义一个继承自Animal的Dog: ``` class Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breed def make_sound(self): print("Woof!") ``` 在这个例中,我们通过在定义Dog时指定它的父为Animal来实现继承。Dog覆盖了Animal的make_sound方法,并且定义了一个新的属性breed。在Dog的构造函数中,我们首先通过super()函数调用父的构造函数来初始化父中的属性,然后再初始化中的属性。 通过继承,我们可以让继承中的属性和方法,并且可以在中添加新的属性和方法或者覆盖父中的方法。这样可以减少代码冗余,并且提高了代码的复用性和可维护性。 ### 回答2: Python中的继承是指一个从另一个继承属性和方法。继承是面向对象编程中的重要概念,它允许我们通过建立新的来扩展或修改已有的功能。 在Python中,使用关键字`class`来定义一个,可以通过在定义时加入括号参数指定继承的父。例如,下面的代码定义了一个`Animal`作为父,`Dog`作为继承的属性和方法。 ```python class Animal: def __init__(self, name): self.name = name def eat(self): print(self.name + " is eating.") class Dog(Animal): def bark(self): print(self.name + " is barking.") ``` 在上面的例中,`Animal`有一个`__init__`方法用于初始化动物的名字和一个`eat`方法用于展示动物正在吃东西。`Dog`继承了`Animal`,因此可以访问父的属性和方法。`Dog`添加了一个额外的`bark`方法用于展示狗正在叫。 通过继承,`Dog`可以实例化并调用父的方法。例如: ```python my_dog = Dog("Bobby") my_dog.eat() # 输出:"Bobby is eating." my_dog.bark() # 输出:"Bobby is barking." ``` 当继承后,可以覆盖父的方法并对其进行修改或扩展。例如,在上面的例中,我们可以在`Dog`中覆盖`eat`方法,使其输出不同的内容: ```python class Dog(Animal): def bark(self): print(self.name + " is barking.") def eat(self): print(self.name + " is eating bones.") ``` 在这种情况下,当我们调用`my_dog.eat()`时将会输出:"Bobby is eating bones.",而不是父中的输出。 总而言之,Python中的继承是通过继承的属性和方法来实现代码复用和扩展功能的一种机制。使用继承可以更好地组织代码,并且可以在保留原有功能的基础上添加新的功能。 ### 回答3: 在Python中,继承是一种重要的面向对象编程的概念。通过继承,一个可以从另一个继承属性和方法。被继承称为父或基继承属性和方法的称为或派生。 通过继承可以获得父的属性和方法,而无需重复编写相同的代码。这提高了代码的可重用性和可维护性。 Python中的继承使用关键字"class"来定义一个,并使用括号指定要继承的父。例如,"class 名(父名)"。 继承的所有属性和方法,并且可以在中添加新的属性和方法,或者对父的方法进行重写。这种重写被称为方法的覆盖。 可以通过调用super()函数来调用父的方法。super()函数在中可以用来执行父中相应的方法,从而实现以及父的方法的共同工作。 继承的一个重要概念是多重继承,即一个可以同时继承多个父的属性和方法。例如,"class 名(父名1, 父名2, ...)"。 继承的好处是可以提高代码的可读性和可维护性,也可以实现代码的复用。通过继承,我们可以建立的层次结构,使得代码更加清晰和易于理解。 然而,继承也需要谨慎使用,因为继承可能导致之间的耦合性增加,使得代码变得更加复杂。在设计继承结构时,需要考虑到功能的分离和单一职责原则,以避免复杂性和耦合性的增加。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值