码迷,mamicode.com
首页 > 其他好文 > 详细

类的私有属性 公有属性 继承 多态

时间:2020-01-19 23:57:37      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:ini   继承   this   写入   解析   amp   自动   过程   增加   

私有属性 && 公有属性

 1 #定义一个最简单的类
 2 class person(object):
 3     hometown = "china" #公有属性,所有类的对象共用的。使用对象.公有属性只会修改自己对象的公有属性,类名.公有属性会把所有对象的公有属性进行修改。
 4     #原因是只要对象不调用公有属性是不会在自己本地创建其内存空间使用类共享的(类的实例化过程),只要本地修改就是在本地创建一个同名的变量而已,相当于局部变量,作用域屏蔽了类的公有属性
 5     #构造函数,接收实例化时候传入参数
 6     def __init__(self, name, sex="man"):
 7         self.name = name #当某个变量需要在类的多个方法中使用就需要在构造函数中将其赋值,这种变量称为类的成员属性
 8         self.__sex = sex #私有属性,只能类的方法调用,对象不能直接访问;对象需要访问可以调用下面get_sex()或者对象名._类名__私有属性 这两种方法
 9     #类的方法
10     def Hello(self):
11         print("i‘m define a person class,my name is %s"%self.name)
12     def print_name(self, name1): #当一个变量只在一个方法中使用可以在方法调用中传入,可以不在构造函数中赋值
13         print("print my name is %s"%name1)
14     def get_sex(self):
15         return self.__sex
16 #类的实例化以及调用功能
17 person1 = person("test person", "man")
18 #类的实例化解析:1、person1 = person("test person") 相当于先申请一块内存名称为person1 ,将实例名和参数传入类 person(person1, "test person"),实例化的对象名就是self,传入的参数就是构造函数的参数。
19 #2、构造函数完成person1.name = "test person"和self=person1赋值后,将内容写入内存空间person1内;在person1.Hello(self)相当person1.Hell0(person1),其中调用self.name就是person1.name;就是步骤1中的"test person"
20 #3、类的实例化过程会自动调用构造函数
21 person1.Hello() #对象调用其方法 i‘m define a person class,my name is test person
22 person1.print_name("zsq")
23 print(person1.get_sex())
24 person1.hometown = "CHINA"
25 person.hometown = "China"
26 print(person1.hometown) #CHINA
27 print(person.hometown) #China 对象修改完公有属性以后,类直接修改公有属性就不会生效了。

继承

 1 class Black_Person(person):
 2     def __init__(self, name, speed): #父类的构造方法需要先继承再重构,参数全部传入以后调用父类的构造函数,再给子类增加的参数赋值
 3         person.__init__(self, name)
 4         self.speed = speed
 5     def print_speed(self):
 6         print("%s speed is %s"%(self.name, self.speed))
 7     def Hello(self): #子类继承父类的方法名进行重构
 8         print("This is child class %s"%self.name)
 9 
10 class Yello_Person(person):
11     def __init__(self, name, technical):
12         person.__init__(self, name)
13         self.technical = technical
14     def print_technical(self):
15         person.Hello(self) #子类方法中可以直接调用父类的方法
16         print("%s technical is %s"%(self.name, self.technical))
17     def Hello(self): #子类继承父类的方法名进行重构
18         print("This is child class %s"%self.name)
19 black_p1 = Black_Person("Boret", "100")
20 yello_p1 = Yello_Person("lgl", "pingpang")
21 black_p1.Hello() #This is child class Boret
22 yello_p1.print_technical() #i‘m define a person class,my name is lgl      lgl technical is pingpang

多态

1 #多态,多态类似父类调用子类的方法,python不直接支持多态,可以使用下面方法间接实现调用一个方法将不同对象传入来调用传入对象对应的方法
2 def hello(obj):
3     obj.Hello()
4 hello(black_p1) #This is child class Boret
5 hello(yello_p1) #This is child class lgl

类的私有属性 公有属性 继承 多态

标签:ini   继承   this   写入   解析   amp   自动   过程   增加   

原文地址:https://www.cnblogs.com/flags-blog/p/12215940.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!