คำถามติดแท็ก static-methods

วิธีการที่ไม่ต้องใช้อินสแตนซ์ของคลาสและไม่สามารถเข้าถึงข้อมูลโดยปริยาย (หรือสิ่งนี้ตัวเองฉัน ฯลฯ ) ของอินสแตนซ์ดังกล่าว

3
ประสิทธิภาพของวิธีการแบบคงที่เทียบกับวิธีการของอินสแตนซ์
คำถามของฉันเกี่ยวข้องกับลักษณะการทำงานของวิธีการแบบคงที่เทียบกับวิธีการของอินสแตนซ์และความสามารถในการปรับขนาด สมมติสำหรับสถานการณ์นี้ว่านิยามคลาสทั้งหมดอยู่ในแอสเซมบลีเดียวและจำเป็นต้องมีชนิดตัวชี้แยกหลายชนิด พิจารณา: public sealed class InstanceClass { public int DoOperation1(string input) { // Some operation. } public int DoOperation2(string input) { // Some operation. } // … more instance methods. } public static class StaticClass { public static int DoOperation1(string input) { // Some operation. } public static int …

4
"staticmethod" และ "abc.abstractmethod`: จะผสมผสานกันหรือไม่?
ในแอพ Python ของฉันฉันต้องการสร้างเมธอดที่เป็นทั้ง a staticmethodและabc.abstractmethod. ฉันต้องทำอย่างไร ฉันลองใช้มัณฑนากรทั้งสอง แต่ไม่ได้ผล ถ้าฉันทำสิ่งนี้: import abc class C(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @staticmethod def my_function(): pass ฉันได้รับข้อยกเว้น * และถ้าฉันทำสิ่งนี้: class C(object): __metaclass__ = abc.ABCMeta @staticmethod @abc.abstractmethod def my_function(): pass ไม่มีการบังคับใช้วิธีนามธรรม ฉันจะสร้างวิธีการคงที่แบบนามธรรมได้อย่างไร * ข้อยกเว้น: File "c:\Python26\Lib\abc.py", line 29, in abstractmethod funcobj.__isabstractmethod__ = True AttributeError: 'staticmethod' object …

7
ไม่สามารถทำการอ้างอิงแบบคงที่กับวิธีการไม่คงที่
การสร้างแอปพลิเคชันหลายภาษาใน Java รับข้อผิดพลาดเมื่อแทรกค่าสตริงจากR.stringไฟล์ XML ของทรัพยากร: public static final String TTT = (String) getText(R.string.TTT); นี่คือข้อความแสดงข้อผิดพลาด: ข้อผิดพลาด: ไม่สามารถทำการอ้างอิงแบบคงที่ไปยังวิธีการที่ไม่คงที่ getText (int) จากประเภทบริบท เกิดจากสาเหตุใดและจะแก้ได้อย่างไร?

6
วิธีการคงที่ - จะเรียกวิธีการจากวิธีอื่นได้อย่างไร?
เมื่อฉันมีเมธอดปกติในการเรียกเมธอดอื่นในคลาสฉันต้องทำสิ่งนี้ class test: def __init__(self): pass def dosomething(self): print "do something" self.dosomethingelse() def dosomethingelse(self): print "do something else" แต่เมื่อฉันมีวิธีคงที่ฉันไม่สามารถเขียนได้ self.dosomethingelse() เนื่องจากไม่มีอินสแตนซ์ ฉันต้องทำอย่างไรใน Python เพื่อเรียก Static Method จาก Static Method อื่นของคลาสเดียวกัน แก้ไข: สิ่งที่เป็นระเบียบ โอเคฉันแก้ไขคำถามกลับเป็นคำถามเดิม ฉันมีคำตอบสำหรับคำถามที่สองอยู่ในความคิดเห็นของ Peter Hansen แล้ว หากคุณคิดว่าฉันควรเปิดคำถามอื่นสำหรับคำตอบที่ฉันมีอยู่แล้วโปรดบอกฉัน

8
.NET: กำหนดประเภทของคลาส“ this” ในวิธีการคงที่
ในวิธีที่ไม่คงที่ฉันสามารถใช้this.GetType()และมันจะส่งคืนไฟล์Type. ฉันจะทำให้เหมือนกันTypeในวิธีการคงที่ได้อย่างไร แน่นอนฉันไม่สามารถเขียนได้typeof(ThisTypeName)เพราะThisTypeNameเป็นที่รู้จักในรันไทม์เท่านั้น ขอบคุณ!

15
การใช้วิธีการคงที่จำนวนมากเป็นสิ่งที่ไม่ดีหรือไม่?
ฉันมักจะประกาศว่าเมธอดทั้งหมดในคลาสเป็นแบบคงที่เมื่อคลาสนั้นไม่จำเป็นต้องติดตามสถานะภายใน ตัวอย่างเช่นถ้าฉันต้องการแปลง A เป็น B และไม่ต้องพึ่งพาสถานะภายใน C ที่อาจแตกต่างกันไปฉันจะสร้างการแปลงแบบคงที่ หากมีสถานะภายใน C ที่ฉันต้องการให้สามารถปรับได้ฉันจะเพิ่มตัวสร้างเพื่อตั้งค่า C และไม่ใช้การแปลงแบบคงที่ ฉันอ่านคำแนะนำต่างๆ (รวมถึงใน StackOverflow) เพื่อไม่ให้ใช้วิธีการคงที่มากเกินไป แต่ฉันก็ยังไม่เข้าใจว่ามันผิดอะไรกับกฎง่ายๆข้างต้น นั่นเป็นแนวทางที่สมเหตุสมผลหรือไม่?

9
รับชื่อของคลาสลูกในคลาสแม่ (บริบทคงที่)
ฉันกำลังสร้างห้องสมุด ORM โดยคำนึงถึงการใช้ซ้ำและความเรียบง่าย ทุกอย่างเป็นไปด้วยดียกเว้นว่าฉันติดอยู่กับข้อ จำกัด ทางมรดกที่โง่เขลา โปรดพิจารณารหัสด้านล่าง: class BaseModel { /* * Return an instance of a Model from the database. */ static public function get (/* varargs */) { // 1. Notice we want an instance of User $class = get_class(parent); // value: bool(false) $class = get_class(self); // value: …

10
ข้อดีของการใช้วิธีการคงที่ใน Python คืออะไร?
ฉันพบข้อผิดพลาดวิธี unbound ใน python พร้อมรหัส import random class Sample(object): '''This class defines various methods related to the sample''' def drawSample(samplesize,List): sample=random.sample(List,samplesize) return sample Choices=range(100) print Sample.drawSample(5,Choices) หลังจากอ่านโพสต์ที่เป็นประโยชน์มากมายที่นี่ฉันคิดว่าจะเพิ่ม@staticmethodด้านบนเพื่อให้โค้ดทำงานได้อย่างไร ฉันเป็นมือใหม่หัดหลาม ใครช่วยอธิบายได้ไหมว่าทำไมเราถึงต้องการกำหนดวิธีการแบบคงที่ หรือเหตุใดวิธีการทั้งหมดจึงไม่ถูกกำหนดให้เป็นวิธีการแบบคงที่

10
ความแตกต่างระหว่าง Static method และ Instance method
ฉันแค่อ่านข้อความที่ให้ไว้ในหนังสือเรียนและฉันไม่แน่ใจจริงๆว่าฉันเข้าใจสิ่งที่มันพูด โดยพื้นฐานแล้วจะบอกฉันว่าเมธอดแบบคงที่หรือคลาสเมธอดนั้นมีคีย์เวิร์ด "ตัวแก้ไข" แบบคงที่ แต่ฉันไม่รู้จริงๆว่ามันหมายถึงอะไร? ใครช่วยอธิบายให้ฉันเข้าใจง่ายๆว่า Static หรือ Class Methods คืออะไร นอกจากนี้ฉันขอคำอธิบายง่ายๆเกี่ยวกับวิธีการของอินสแตนซ์ได้หรือไม่ นี่คือสิ่งที่พวกเขาให้ฉันในตำราเรียน: มีผลกระทบในทางปฏิบัติที่สำคัญของการมีหรือไม่มีของตัวปรับแต่งคงที่ เมธอดคลาสสาธารณะอาจถูกเรียกใช้และเรียกใช้งานได้ทันทีที่ Java ประมวลผลนิยามของคลาสที่เป็นอยู่ นั่นไม่ใช่กรณีสำหรับวิธีการอินสแตนซ์ ก่อนที่วิธีการอินสแตนซ์สาธารณะอาจถูกเรียกใช้และดำเนินการอินสแตนซ์จะต้องถูกสร้างขึ้นจากคลาสที่เป็นสมาชิก ในการใช้เมธอดคลาสสาธารณะคุณต้องมีคลาส ในทางกลับกันก่อนที่คุณจะสามารถใช้วิธีการอินสแตนซ์สาธารณะคุณต้องมีอินสแตนซ์ของคลาส ลักษณะที่เรียกใช้เมธอดแบบคงที่ภายในนิยามของวิธีการอื่นจะแตกต่างกันไปขึ้นอยู่กับว่าทั้งสองวิธีเป็นของคลาสเดียวกัน ในตัวอย่างข้างต้นแฟกทอเรียลและเมนเป็นทั้งเมธอดของคลาส MainClass เป็นผลให้การเรียกใช้แฟกทอเรียลในคำจำกัดความของ main เพียงแค่อ้างอิงชื่อเมธอด "แฟกทอเรียล"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.