animal

Js中Prototype、__proto__、Constructor、Object、Function关系介绍 ,JS原型

巧了我就是萌 提交于 2020-04-05 19:50:47
此文来自: http://www.blogjava.net/heavensay/archive/2013/10/20/405440.html Js中Prototype、__proto__、Constructor、Object、Function关系介绍 一 Prototype、__proto__与Object、Function关系介绍 Function、Object:Js自带的函数对象。 prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型(Function.prototype函数对象是个例外,没有prototype属性)。 __proto__:每个对象都有一个名为__proto__的内部隐藏属性,指向于它所对应的原型对象(chrome、firefox中名称为__proto__,并且可以被访问到)。原型链正是基于__proto__才得以形成(note:不是基于函数对象的属性prototype)。 关于上面提到的函数对象,我们来看以下例子,来说明: var o1 = {}; var o2 =new Object(); function f1(){} var f2 = function(){} var f3 = new Function('str','console.log(str)'); f3('aabb'); // aabb console

面向对象的进阶(组合和继承)

感情迁移 提交于 2020-04-01 03:22:27
初始面向对象之后,我们来学习面向对象的三大特性以及面向对象的其他补充方面的知识。 组合 组合只有一个例子因为组合只作为上一章的补充内容 #老师 课程 生日 class Course: def __init__(self,name,period,price): self.name = name self.period = period self.price = price class Birth: def __init__(self,year,month,day): self.year = year self.month = month self.day = day class Teacher: def __init__(self,name,salary,boy_friend,python): self.name = name self.salary = salary self.bf = boy_friend self.course = python python = Course('python','6 months',20000) egg = Teacher('egon',200,'yuan',python) print(egg.bf) print(egg.name) print(egg.course.name) egg_birth = Birth(1965,2,2) print

issubclass,type,isinstance反射

与世无争的帅哥 提交于 2020-03-13 05:41:34
1, issubclass 判断前一个是不是后一个的子类,或者说是后辈 1 class Animal: 2 pass 3 class Cat(Animal): 4 pass 5 class Boshicat(Cat): 6 pass 7 8 print(issubclass(Cat,Animal)) 9 print(issubclass(Boshicat,Animal)) 10 print(issubclass(Cat,Boshicat)) 11 12 13 运行结果 14 True 15 True 16 False 2,type type: 精准的给出对象的类 1 class Animal: 2 pass 3 class Cat(Animal): 4 pass 5 class Boshicat(Cat): 6 pass 7 8 9 c = Cat() 10 print(type(c)) 11 print(type(c) == Cat) 12 print(type(c) == Animal) 13 print(type(c) == Boshicat) 14 15 16 运行结果 17 18 <class '__main__.Cat'> 19 True 20 False 21 False 3,isinstance isinstance:判断一个对象是不是一个类

第二十四天

烂漫一生 提交于 2020-03-12 15:42:53
组合内容回顾 一个类的对象是另一个类对象的属性 两个类之间 有什么什么的关系 :班级有学生 学生有班级 班级有课程 图书有作者 学生有成绩) 学生 课程 班级 课程 圆形 圆环 圆形 圆锥 圆柱 当你改的多的时候, 运用分组比较方便 命名空间 ​ 在类的命名空间里 :静态变量, 绑定方法 ​ 在对象命名空间里:类指针,对象的属性(实例属性) 调用习惯 类名:静态变量 对象: 静态变量(对象调用静态变量时候,不能对变量赋值操作, 只能查看 不能 向后面的一样 对象.静态变量'=') 绑定方法 对象.绑定方法() 类名.绑定方法(对象) 三大特性 继承 封装 多态 进阶 # 猫 # 吃 # 喝 # 睡 # 爬树 # 狗 # # 吃 # 喝 # 睡 # 看家 # # 继承 --需要解决代码重复的 # 继承语法 # # class A: # pass # class B: # pass # # B继承A A是父类 B是子类 # A是父类 基类 超类 # B是 子类 派生类 继承 B继承A A是父类 B是子类 A是父类 基类 超类 B是 子类 派生类 子类可以用 父类和子类的方法选择: ​ 子类的对象 如果去调用方法 ​ 永远优先调用自己的 ​ 如果自己有 用自己的 ​ 自己没有 用父类的 ​ 如果自己有 还想用父类的 直接在子类方法中 调父类 的方法 , ​ 父类名.方法名 class

C#中多态的实现

丶灬走出姿态 提交于 2020-03-06 18:54:44
由于可以继承基类的所有成员,子类就都有了相同的行为,但是有时子类的某些行为需要相互区别,而子类需要覆盖父类的方法来实现子类特有的行为,这就是所谓的多态,多态即相同类型的对象调用相同的方法却表现出不同行为的现象。 一.实现多态的两种常见方式 (1).虚方法(virtual):将父类的方法,添加关键字virtual,此方法在子类中用override重写。 (2).抽象类与抽象方法(abstarct):有时候基类的作用只是为子类提供公共成员,没有具体的实现操作,那么此时可以将基类及其方法定义为抽象的。子类中的方法仍用override重写。 二.虚方法(virtual)的使用 我们知道比较有名的车,有宝马,奔驰等,可以从它们中抽象出一个汽车基类,而宝马车,奔驰车作为子类 (1).基类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Polymorphic { public class Car { public virtual void carName() { Console.WriteLine("这是汽车"); } } } (2).子类 using System; using System

类、继承、类属性、实例属性

你离开我真会死。 提交于 2020-03-05 22:11:20
1、定义 class Animal(): def __init__(self, __color, footNum, isCanSpeak): """ 动物属性 :param color: :param footNum: :param isCanSpeak: """ self.__color = __color self.footNum = footNum self.isCanSpeak = isCanSpeak self.isPersonFriend = True 2、继承 普通继承: class Dog(Animal): def __init__(self, __color, footNum, isCanSpeak, eyeNum): super().__init__(__color, footNum, isCanSpeak) 接口继承(子类必须包含父类所有的实现): class 接口类名(metaclass=abc.ABCMeta): isTest = True def __init__(self, school, money): self.school = school self.__money = money @abc.abstractmethod def hitStudent(self): pass 3、类的特殊属性 print(Dog.__name__) #Dog 类名

Python 【类的多态】

徘徊边缘 提交于 2020-03-01 13:45:48
一.多态 #类的多态 class Animal(object): #Animal类继承object def __init__(self,color): self.color = color def eat(self): print("动物在吃!") def run(self): print("动物在跑") class Cat(Animal): #Cat继承Aninal 继承[属性和方法] def eat(self): #方法重名 print("猫仔!") class Dog(Animal): #继承时候,方法重名用子方法 def __init__(self,name,age,color): super(Dog,self).__init__(color) #super表示父类,调用父类的初始化方法 self.name = name self.age = age def eat(self): #方法重名 print("狗仔!") #多态 def feed(obj): obj.eat() #对象作为参数传入 an = Animal("黄") cat = Cat("橘黄") dog = Dog("小黑",12,"黑色") feed(an) feed(cat) feed(dog) 上面有三种类,Animal类、Cat类、Dog类,三种类中都有共同的方法eat() 使用方法 def feed

TypeScript Class(类)

自古美人都是妖i 提交于 2020-03-01 01:21:03
传统的JavaScript注重用函数和基于原型的继承来创建可复用的组件,但这可能让用习惯面对对象方式的程序员感到棘手,因为他们的继承和创建对象都是由类而来的。从JavaScript的下一个版本,ECMAScript 6开始,JavaScript程序员就能够用基于这种基于类的面对对象方式来创建编写自己的程序了。在TypeScript中,不需要再等JavaScript的下一个版本就已经支持开发者使用这一技术了。 类 让我们来看一个简单的基于类的例子: class Greeter { greeting: string; constructor(message: string) {this.greeting = message; } greet() {return "Hello, " + this.greeting; } }var greeter = new Greeter("world"); 如果你之前有使用过C#或者Java,会觉得语法非常相似。我们声明一个新的类"Greeter"。这个类里面有三个成员,一个名为"greeting"的属性,一个constructor和一个"greet"方法。 你会注意到,在类里面当某一个成员使用了"this",意味着他访问的是这个类的成员。 在最后一行中,我们使用"new"来为Greeter类构造一个实例。这将会调用之前定义的构造函数

C#学习笔记21-多态之抽象类

…衆ロ難τιáo~ 提交于 2020-02-29 14:01:41
C#学习笔记21-多态之抽象类 抽象类 抽象类特点 抽象类实例 抽象类 在前一篇博客 C#学习笔记20-多态之虚方法 中,我们提到实现多态存在有三种方法,前一篇讲解了虚方法,这一篇继续复习抽象类。当父类中的方法不知道如何去实现时,可以将父类写成抽象类,方法写成抽象类,比如小明打球,小平打球,但是他们如何打球未知,此时就可以写成抽象类来描述 抽象类,顾名思义就是一个抽象的,没有实体(没有具体实现)的类,即抽象类不能被实例化,不能创建对象。 抽象类要实现多态,需要创建抽象方法,需要加上关键字abstract,基本语法如下: public abstract class Animal { public abstract string Name { get ; set ; } public abstract void Bark ( ) ; } 抽象类特点 1)抽象类不允许创建对象,对可以创建子类对象赋值给父类 假设父类为Animal、子类为Dog,则 Animal a1 = new Animal ( ) ; //写法错误,不能创建对象 Animal a2 = new Dog ( ) ; //写法正确 2)抽象类中的成员都必须标记abstract,并且不能有任何实现,抽象类中可以包含实例成员,并且抽象类中实例成员可不被子类实现 3)抽象成员必须在抽象类中,有抽象成员就必须有抽象类 4

依赖注入Dependency Injection,DI

一世执手 提交于 2020-02-26 03:14:06
依赖注入Dependency Injection,DI @AutoWired,他注入的机制最基本的一条是:根据类型(by type),根据类型从IOC容器中获取bean。 使用AutoWired进行依赖注入的时候,如果注入的接口有多于一个的实现类,可一根据变量名称,从IOC容器中获取对象。 Animal接口 两个实现类:dog、cat @AutoWired Animal animal; // 报错 @AutoWired Animal dog; // 正常 通过name从IOC容器中获取bean 来源: CSDN 作者: 414丶小哥 链接: https://blog.csdn.net/u010838785/article/details/104455653