-
2018-09-12 16:52:26
class Cat: # 定义类 对象必须有对应的类 类名使用大驼峰命名法
# 定义对象方法 对象方法需要在对应的类中定义
def eat(self): # 定义对象方法和定义函数类似,只不过对象方法的第一个形参必须是self
print(“吃东西”)创建对象
cat1 = Cat()
调用对象方法 引用对象的变量名.方法名()
cat1.eat() # 定义对象方法时必须设置第一个形参为self,但是调用时不要设置self对应的实参class Cat: # 定义类
pass创建对象
cat1 = Cat()
定义属性 首次赋值就会被定义
cat1.type = “猫”
print(cat1.type)
cat1.type = “卡通猫” # 再次赋值,只是改变记录的数据
print(cat1.type)class Cat: # 定义类
# 定义方法
def eat(self):
print(“吃东西”)同一个类可以创建多个对象
创建对象
tom = Cat()
tom.eat() # 同一个类的不同对象都可以调用对象方法(可以有相同的行为)
tom.type = “卡通猫” # 同一个类的不同对象中的属性记录的数据可能是不同的(每个个体对应的数据不同)
print(tom.type)创建另一个对象
jiafei = Cat()
jiafei.eat()
jiafei.type = “家猫”
print(jiafei.type)class Cat:
def introduce(self): # self 指的是 调用该方法的对象
“”“自我介绍”“”
print(“我是 %s” % self.type)
self.age = 10 # self也可以作为对象来定义对象属性创建对象1
tom = Cat()
tom.type = “卡通猫”
tom.introduce() # 解释器 会自动将调用方法的对象作为方法的第一个实参进行传递
print(tom.age)创建对象2
jiafei = Cat()
jiafei.type = “家猫”
jiafei.introduce()
print(jiafei.age)class Cat:
def init(self, type): # init可以设置自定义参数,用于实现属性的不同初始值
# 初始化方法
self.type = typedef introduce(self): """自我介绍""" print("我是 %s" % self.type)
创建对象1
tom = Cat(“卡通猫”) # init自定义形参对应的实参在创建对象的()中传递
调用对象方法
tom.introduce()
print(tom.type)jiafei = Cat(“家猫”)
print(jiafei.type)class Cat:
def init(self, name, age):
self.name = name
self.age = agedef __str__(self): # 实现该方法后,返回什么内容,打印对象时就显示对应的内容 return "我的名字 %s, 年龄 %d" % (self.name, self.age)
tom = Cat(“汤姆”, 60)
print(tom)更多相关内容 -
Java中 方法的三种调用格式
2020-04-05 23:52:30Java中方法的三种调用格式分别为:单独调用、打印调用、赋值调用。 1、单独调用:方法名称(参数) public class helloworld { ... //add为方法名称,(23,64)为参数 } public static void sum(int a,int b){...Java中方法的三种调用格式分别为:单独调用、打印调用、赋值调用。
1、单独调用:方法名称(参数)
public class helloworld {
public static void main(String[] args) {
//单独调用
sum(23,64); //add为方法名称,(23,64)为参数
}
public static void sum(int a,int b){ //因为这里用的是void,不需要返回到调用出,直接打印输出
int sum=a+b; //也因此void,不能使用打印调用和赋值调用
System.out.println(add);
}
}
2、打印调用:System.out.println(方法名称(参数));
public class helloworld {
public static void main(String[] args) {
//打印调用
System.out .println(sum(23,64));
}
public static int sum(int a,int b){ //因为这里的返回值类型为int,不能直接打印输出,则需要将
//返回值,返回到调用处
int result=a+b;
return result;
}
3、赋值调用:数据类型 变量名称=方法名称(参数)
public class helloworld {
public static void main(String[] args) {
//赋值调用
int num=sum(23,64);
System .out .println(num);
}
public static int sum(int a,int b){
int result=a+b;
return result;
}ps:下面的几张图片方便对方法和调用格式的理解
如果有不足之处和错误,还请指正。 -
Python通过对象名调用方法(对象名后面括号和参数)
2019-06-26 18:15:33d = u2.connect() #该方法返回一个UIAutomatorServer类的实例 d(discription = 'Books').click() # ???wtf,怎么对象名字后面带个括号,什么操作? 为了搞懂这个原因,我把代码里原来正确的参数description随便改成...实习做一个自动化测试项目的时候看到大佬代码:
d = u2.connect() #该方法返回一个UIAutomatorServer类的实例 d(discription = 'Books').click() # ???wtf,怎么对象名字后面带个括号,什么操作?
为了搞懂这个原因,我把代码里原来正确的参数description随便改成了一个错的,比如d(abc='1'),根据报错的信息一步步地查看相关的代码部分,然后结合百度找到了这个用法,其实就是python的__call__()方法:
在创建python类型时如果定义了__call__()方法,那么这个类型就是可调用的,比如在这个场景里 print(callable(d))就会输出True。
以下内容参考博客: Python类的__call__()方法
__call__():Python中,只要在创建类型的时候定义了__call__()方法,这个类型就是可调用的。
Python中的所有东西都是对象,其中包括Int/str/func/class这四类,它们都是对象,都是从一个类创建而来的。元类就是创建这些对象的东西,type就是Python的内建元类。
其中,func是可调用的对象,说明在创建它的类型(父类或它本身)的时候,定义了__call__()方法。
>>>callable(lambda:8)
True
>>>def fn():
pass
>>>callable(fn)
True
所以一个类实例也可以成为类似函数这样能直接调用的对象,只要定义的时候有__call__()方法就可以。
>>>class Reader():
def __init__(self,name,nationality):
self.name = name
self.nationality = nationality
def __call__(self):
print('Reader: %s Nationality: %s' % (self.name, self.nationality))
>>>r = Reader('Annie','Chinese')
>>>r()
Reader:Annie Nationality: Chinese
__call__()方法还可以带参数
定义一个可以直接调用类实例的Reader类,并可统计读者数量
>>>class Reader():
count = 0
def __init__(self,name,nationality):
self.name = name
self.nationality = nationality
Reader.count += 1
def __call__(self, behave):
print('Reader: %s' % self.name)
print('Nationality: %s' % self.nationality)
print('%s is being %s.' % (self.name, behave))
print('The total number of readers is %s.' % Reader.count)>>>a = Reader('Annie','Chinese')
>>>a('Nice')
Reader: Annie
Nationality: Chinese
Annie is being Nice.
The total number of readers is 1.
>>>b = Reader('Adam','American')
>>>b('Silly')
Reader: Adam
Nationality: American
Adam is being Silly.
The total number of readers is 2. #自动增加
-
Python如何使用类对象调用实例方法
2020-05-06 15:29:40在前面的学习中,我总结了...我们知道,实例对象可以调用这三种方法,而类对象只能调用类方法和实例方法,既然如此为何我们还要研究类对象调用实例方法呢?我们先看一个例子: class Dog: def action(self): ...在前面的学习中,我总结了python中的三种方法类型的,分别是实例方法、类方法和实例方法,可以参考文章从例子中来到例子中去-Python中的实例属性、类属性与实例方法、类方法、静态方法。
我们知道,实例对象可以调用这三种方法,而类对象只能调用类方法和实例方法,既然如此为何我们还要研究类对象调用实例方法呢?我们先看一个例子:
class Dog: def action(self): print("吃骨头") #通过类名直接调用实例方法 Dog.action() """ 上述代码执行的结果: TypeError: action() missing 1 required positional argument: 'self' """
显然,程序会报错,但是我们观察一下报错的信息提示,即:调用的方法中没有给self传参数,slef就是我们对象的引用。
这个提示告诉了我们,之前在使用实例对象调用实例方法的时候,其实是python自动给self参数进行了传值,而使用Dog.action()的方式,我们只有类对象的引用,缺少实例对象的引用,python不能够实现自动的传递了。
因此,我们可以根据提示传递一个实例对象的引用,进行手动操作,我们修改一下代码,来验证这样的思想是否正确:class Dog: def action(self): print("吃骨头") dog = Dog() Dog.action(dog) """ 上述代码执行的结果: 吃骨头 """
从结果可以看到python是允许类名直接调用实例方法的。
总结
通常情况下,我们都是使用类的实例对象调用类中的实例方法的,如果想使用类名进行调用,需要手动给该实例方法传递实例对象的引用。
-
对象,方法的调用
2017-09-13 16:19:14第一章 类和对象 概念 类:具有相同属性和行为的一组对象的集合和抽象 系统定义的类 用户自定义的类 对象:具体的实例,类的实例化,有一组属性和方 法组成(万物皆对象) 关系 类的实例化是对象 对象的抽象是实例... -
java 对象调用方法的过程
2018-10-01 17:57:591、编译器通过对象的声明类型和和方法名,在此类型和其超类中寻找权限为public的方法。 2、编译器根据方法调用时...相反若不是上述声明则编译器根据对象声明的类型,动态的去寻找要调用的方法,这称之为动态绑定。... -
JSON对象调用方法
2017-12-19 15:32:22JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 在JSON中,有两种结构:对象和数组。 1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“... -
怎么用一个对象调用另一个类中对象的方法
2016-03-17 04:44:31怎么用一个对象调用另一个类中对象的方法 比如一个类A ,一个类B,B里面有个方法show(),在main中A a=new A();B b=new B();在A中没有调用B方法的情况下,我想通过a调用B中的show()方法,该怎么实现。初学者,求大神给... -
@mock创建对象,调用方法时候返回null
2020-05-16 16:43:54新手使用mockito框架笔记 调用mock出来的对象前一定要指定返回,不然就会返回null when(mockObj.method(xxx)).thenReturn("xxxx") -
Python3中成员方法调用成员变量 , 成员方法调用成员方法
2019-05-19 10:46:13成员方法中调用成员变量语法格式 : …self .变量名 例: 成员方法中调用成员方法格式 : …self . 方法名(实参1 , 实参2, …) 例 : self : 仅出现在成员方法中 , 指代执行该方法的对象 ... -
在js对象中调用对象属性
2019-03-12 09:11:30有一个功能,需要在js对象中获取对象属性来进行计算 a={ b:1, c:function(){ return this.b } } 不能使用箭头函数 aaaa={ bbbb:1, cccc: ()=> this.bbbb } 因为箭头函数不会绑定this,或者说箭头... -
Java中调用对象方法的执行过程
2017-09-25 20:09:08假设调用x.f(param),且隐式参数x声明为C类的对象。需要注意的是:有可能存在多个名字为f,但是参数类型不一样的方法。例如,可能存在f(int)和f(String)。编译器将会一一列举所有类C和其超类中访问属性为public且名... -
Java反射通过父类对象调用子类的方法
2018-06-02 09:39:32最近在抽时间写一个底层转发控制器请求的工具,说通俗一点就是首先我定义一个抽象类或者接口A(实现类A就标识为控制器),然后定义很多继承或者实现了A类的类B(用户真正的Controller); 1.定义一个抽象类作为所有... -
java父类获取子类对象、调用子类方法
2020-01-17 14:24:391.Java中父类能调用子类的方法吗?...(4)在父类中直接new子类相关对象或者通过构造函数传入子类对象,然后调用其方法 (5)将子类相关方法声明为static,在父类中调用子类的static方法 1.2 四种实现方式... -
Java反射——如何通过Java中的反射调用对象的方法?
2018-09-29 17:34:15一.Java反射拿到调用对象的方法 1.通过Class.forName(“包名+方法的类名”)拿到方法的对象; 如:Class<?> clazz = Class.forName("ReflectionTest"); 也可以通过实例,获取方法的对象... -
Spring为什么使用this调用需开启事务的方法(本类对象方法),事务并不生效
2020-02-26 22:49:08环境: Springboot:2.2.3.RELEASE ...Controller调用Service,Service调用本类对象一个带事务的方法,结果事务并不生效。 问题分析: 首先分析事务管理的本质是什么,Aop!关键是代理对象!... -
远程方法调用(RMI)与远程过程调用(RPC)
2019-08-07 10:50:29能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。使用代表:EJB RMI远方法程调用步骤: 1、客户调用客户端辅助对象stub上的方法 2、客户端辅助对象stub打包调用信息... -
Java this关键字(调用属性,调用方法,调用当前对象)
2018-01-27 19:56:06·调用属性(代码示例): public class thisDemo01 { public static void main(String[] args) throws Exception { BlueMoon bm=new BlueMoon("渣渣辉", 100); System.out.println(bm.getInfo()); } } class... -
python创建对象时自动调用初始化方法
2020-01-21 21:58:07Python创建对象:对象名称=类() class Point: ...2.初始化方法(init)—为对象的属性设置初始值 初始化方法:init,属于内置方法,指明一个对象初始化的行为 创建一个初始化方法例子: class Cat()... -
C++ 类、对象,及其调用方法
2016-07-30 18:35:12声明:本人是一名iOS开发者,接触C++已经很久了,之前只能是调用别人写好的方法,但不知道怎么去声明及其实现这些方法,现在是要好好学习C++,把每天学的东西及其心的一一记录在blog里面,互相学习,有些观点或者... -
Java - 如何通过反射调用对象的方法?
2019-03-17 15:15:37分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!... 请看下面的代码: import java.lang.reflect.Method;... public static void main(String[] args) throws E... -
构造方法何时被调用
2021-03-01 07:03:05构造函数的作用是初始化对象,即在创建对象时被系统调用(与普通方法不同,程序不能显示调用构造函数)。构造函数还能够被重载,即可以传入参数,当程序中包含有带参的构造函数时,系统将不会再提供的无参构造函数。当... -
JAVA类之间方法的调用
2018-11-02 23:39:15JAVA类方法的调用一、静态方法调用其他方法:1. 静态方法调用非静态方法2.静态方法调用静态方法二、非静态方法调用其他方法1.非静态方法在同一类内...无论是否在同一类内,均需要通过对象调用 //Test类 package mai... -
Java 上转型对象(父类、本类方法的调用)
2018-04-14 18:00:41上转型对象 父类 Father.java package com.ggsddu.base.transition; public class Father { public void read() { System.out.println("父类say方法"); } public void onlyFather() { Sy... -
C++对象数组调用构造/析构函数的方法
2016-09-20 23:35:25C++的对象数组: 顾名思义,即是存储对象的数组。比如有一个对象student,实例化为对象数组...//第二种方法,在堆空间中分配空间对象数组调用构造函数:class student //定义一个student类,只有个构造函数当示例用 { pu -
父类对象可以调用子类中的方法吗?
2017-03-30 11:03:382.我们new一个子类对象赋给父类(父类的引用指向了子类的对象,也就是说java里说的多态,),父类对象不可以调用子类的方法,但如果子类重写了父类的某个方法,则此时父类调用的是子类方法的内容。 -
JAVA中方法的调用(详细整理)
2021-02-12 08:55:06JAVA中方法的调用主要有以下几种:1.非静态方法非静态方法就是没有 static 修饰的方法,对于非静态方法的调用,是通过对 象来调用的,表现形式如下。对象名.方法()eg:public class InvokeMethod{public static void... -
JS调用Android方法,向Android方法传递json数据
2014-11-22 11:33:11JavaScript调用Android方法,向Android方法传递json数据。 -
Java同一个线程对象能否多次调用start方法
2020-03-31 22:24:12同一个线程对象能否多次调用start方法,搞清楚这个问题,首先需要了解线程的生命周期 一、线程生命周期 更多线程状态细节描述可查看Thread内部枚举类:State 从上图线程状态转换图可以看出: 新建(NEW)状态是... -
C++类方法调用
2019-10-29 09:23:09在C++类内部方法调用时,一般都是先去定义一个类的变量,实例化之后再通过类对象去调用类内部的函数。在项目中发现另一种比较方便的方法,不需要定义类对象,话不多说直接上代码。 实例代码如下: #include <...