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

私有属性 && 公有属性

 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

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

时间: 2024-08-02 01:39:21

类的私有属性 公有属性 继承 多态的相关文章

python-装饰器,类与对象,私有字段,析构,__call__,继承,多继承,接口

1.装饰器执行流程 装饰器:将原函数替换为wrapper函数 def outer() @outer  --- func1作为参数传入outer() def wrapper()  --- wrapper()放入内存 return wrapper   --- 返回wrapper地址,Func1重新赋值为wrapper Func1()  --- 调用func1函数 def wrapper() print '验证' def Func1() print 'func1' [[email protected]

反射获取一个类的私有方法

今天在刷面试题的时候,发现一个题目是编写程序通过反射获取一个类的私有方法,因为之前学反射的时候也学的浅,没有考虑到这样的事情.今天敲了一下,虽然也就是那么几行代码,还是磕磕绊绊的,最后终于搞定了,这里总结一下 Java反射得到一个类的私有方法 获得私有方法的流程是 (1)获取目标类 (2)获取目标方法 Method method=clazz.getDeclaredMethod(name);//可以调用类中的所有方法(不包括父类中继承的方法) Method method=clazz.getMeth

Python面向对象 --- 新旧式类、私有方法、类属性和类方法、静态方法

一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在python2.x中,若没指定父类,则不会以object作为基类. 2)旧式类(经典类):在定义类时,类后边括号中不用继承object类,甚至不用括号. 3)dir方法是用来查看类的内置方法. 二.私有方法和属性 1)私有属性是对象不希望公开的属性:私有方法是对象不希望公开的方法.在定义私有属性和方法时,在属

ES6入门六:class的基本语法、继承、私有与静态属性、修饰器

基本语法 继承 私有属性与方法.静态属性与方法 修饰器(Decorator) 一.基本语法 1 class Grammar{ 2 constructor(name,age){ //定义对象自身的方法和属性 3 this.name = name, 4 this.age = age 5 } 6 // 在原型上定义只读属性 7 get inva(){ 8 return "JS"; 9 } 10 //在原型上定义可读写属性 11 set skill(val){ 12 this._skill =

类的公有属性

一.概念 我们前面提到类的私有属性,也就是类中不能直接访问的.但是不是可以直接访问的属性就是公有属性呢?其实也不是.在__init__()构造函数中的属性,对外基本都可以访问,但是他们并不是公有属性.那什么叫公有属性呢? 定义: 指的是所属这个类的所有对象,都可以访问的属性,叫做公有属性. 二.属性 2.1 成员属性 class Person(object): def __init__(self, name, job, phone, address): self.name = name # 成员

对象方法、类方法、原型方法 && 私有属性、公有属性、公有静态属性

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>test</title> </head> <body> <script> //对象构造函数 function Atest(name){ //私有属性,只能在对象构造函数内部使用 var class

php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

1.函数     php内置函数可以直接使用,如果没有安装php扩展即可     自定义函数 //函数function 函数名 function dump($var = null){ //支出默认参数值 echo '<pre/>'; var_dump($var); } 2.类(class)和对象( new Obj) <?php //定义一个人的类,现在还不是对象 class Person { //私有属性 private $eye = '大眼睛'; private $mouth = '小

js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别

1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <title>test</title> 5 </head> 6 <body> 7 <script> 8 //对象构造函数 9 function Atest(name){ 10 //私有属性,只能

C#箴言之用属性来访问类的私有成员

在程序中,难免要访问某个对象的私有成员.那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可:而另一个就是提供公有的成员访问函数来进行访问.那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成. 首先来看看三种方法的如何实现以及调用的,这里用一个例子来说明,即访问“EmployeeInfo”类的私有成员strName,具体如下表格所示. 那么这三种方法有什么区别呢,用如下的表格,可以更好的说明三者的区别. 因